Tutoriale WordPress de încredere, atunci când aveți cea mai mare nevoie.
Ghidul începătorului pentru WordPress
Cupa WPB
25 de milioane+
Site-uri web care folosesc plugin-urile noastre
16+
Ani de experiență WordPress
3000+
Tutoriale WordPress de la experți

Cum să limitați rezultatele căutării pentru anumite tipuri de postări în WordPress

Te-ai întrebat vreodată cum poți limita rezultatele căutării la anumite tipuri de postări? Nu este foarte greu. Am arătat deja cum să dezactivezi funcția de căutare în WordPress modificând fișierul functions.php. Acum vom face același lucru, cu excepția faptului că vom filtra rezultatele căutării.

Deschideți fișierul functions.php și adăugați următorul cod:

function searchfilter($query) {

    if ($query->is_search && !is_admin() ) {
        $query->set('post_type',array('post','page'));
    }

return $query;
}

add_filter('pre_get_posts','searchfilter');

Observați linia care spune

$query->set('post_type',array('post','page'));

Puteți filtra rezultatele căutării modificând valorile din variabila array. În prezent, este setat să afișeze postări și pagini, dar îl puteți modifica pentru a afișa orice doriți.

Dezvăluire: Conținutul nostru este susținut de cititori. Acest lucru înseamnă că dacă faceți clic pe unele dintre linkurile noastre, este posibil să câștigăm un comision. Vedeți cum este finanțat WPBeginner, de ce contează și cum ne puteți susține. Iată procesul nostru editorial.

Cel mai bun instrumentar WordPress

Obține acces GRATUIT la instrumentarul nostru - o colecție de produse și resurse legate de WordPress pe care fiecare profesionist ar trebui să le aibă!

Interacțiuni cu cititorii

26 CommentsLeave a Reply

  1. Mulțumesc pentru acest cod – a funcționat, deși ultima actualizare a fost în 2013! Tema mea folosește și o căutare instantanee și aș dori să limitez și acolo rezultatele. Cum aș putea face asta?

  2. Tema mea actuală afișează articole cu câteva rânduri de început pentru termenul/cuvântul căutat. Vreau să o personalizez pentru a afișa paragraful care conține termenul/cuvântul căutat în rezumatul articolului. Cu alte cuvinte, vreau să afișez textul relevant în rezumatul articolului, nu paragraful de început în rezultatele căutării. Poate cineva să mă ajute cu asta....

  3. Salut,

    Cum pot limita rezultatele căutării pentru anumite tipuri de postări ȘI termeni specifici de taxonomie personalizată?

  4. Am o funcție ușoară în fișierul themes functions.php, care ar trebui să filtreze doar Postările după un termen de căutare... când caut ceva acum, apare eroarea HTTP 500 „Site-ul nu poate afișa pagina”. Cineva are o idee, ce este greșit cu funcția mea?

    function searchFilter($query) { if ($query->is_search) { wp_reset_query(); $args = array ( ‘s’ => $_GET[‘s’] ); query_posts( $args ); } } add_filter(‘pre_get_posts’, ‘searchFilter’);

  5. Acest lucru restricționează toate formularele de căutare la tipul de postare personalizat – inclusiv formularul de căutare din bara laterală, care trebuie să returneze toate rezultatele. Acest lucru funcționează pentru mine:

    funcție searchfilter($query) {
    if ($query->is_search && !is_admin() ) {
    if(isset($_GET[‘post_type’])) {
    $type = $_GET[‘post_type’];
    if($type == ‘book’) {
    $query->set(‘post_type’,array(‘book’));
    }
    }
    }
    return $query;
    }
    add_filter(‘pre_get_posts’,’searchfilter’);

    • Mulțumesc pentru ajutor, am îmbunătățit codul dvs. astfel încât oamenii să poată căuta doar post_types permise.

      funcție searchfilter($query)
      {
      if ($query->is_search && !is_admin() )
      {
      if(isset($_GET[‘post_type’])) {
      $types = (array) $_GET[‘post_type’];
      $allowed_types = get_post_types(array(‘public’ => true, ‘exclude_from_search’ => false));
      foreach($types as $type)
      {
      if( in_array( $type, $allowed_types ) ) { $filter_type[] = $type; }
      }
      if(count($filter_type))
      {
      $query->set(‘post_type’,$filter_type);
      }
      }
      }
      }
      add_filter(‘pre_get_posts’,’searchfilter’);

      • Cum este implementat acest lucru? Dacă am înțeles corect comentariul lui Greg, dorim un singur formular care este limitat la un tip de postare, păstrând în același timp căutarea implicită intactă pentru alte zone ale site-ului.

        Întreb deoarece un site la care lucrez are nevoie de o „Bibliotecă de resurse” căutabilă, pe care aș dori să o construiesc fără a compromite funcționalitatea normală de căutare.

  6. Salut,

    Nu pot restricționa paginile în filtrul de căutare.
    Am nevoie doar de căutare în postări, nu în pagini.

    $query->set(‘post_type’,array(‘post’));
    Aceasta afișează și paginile.

  7. Am folosit acest cod pentru a-mi restricționa rezultatele căutării la Pagini, nu la Articole. A funcționat în acest sens, însă pare să caute doar numele paginilor, spre deosebire de conținut. De exemplu, dacă un utilizator caută „prețuri”, pagina Prețuri va fi un rezultat, dar dacă caută „preț” sau „cost” (ambele fiind cuvinte de pe pagina de prețuri), nu se găsește nimic. Lipsește un fragment de cod?

  8. Hi,
    I have a question and I couldn’t get a solution since last month.
    I have lost of categories, pages and re-directions in my blog so my search box finds many unnecessary results when you try to search something. I want to customize my search.php for only categories part. In other words, we you search something, the results should be only from categories sections. So I will be get rid of redundant & duplicated results. My current codes are as below…Please help me :)

  9. Există o problemă cu fragmentul dvs.:

    Limitează rezultatele căutării în backend, ar trebui să o încadrați cu:


    dacă ( !is_admin() ) {
    // fragment
    }

  10. Deci, cum ați aplica acest lucru unei bare de căutare specifice? Nu se aplică filtrul la fiecare bară de căutare de pe site-ul dvs., nu-i așa?

Lasă un răspuns

Vă mulțumim că ați ales să lăsați un comentariu. Vă rugăm să rețineți că toate comentariile sunt moderate conform politicii noastre de comentarii, iar adresa dvs. de e-mail NU va fi publicată. Vă rugăm să NU folosiți cuvinte cheie în câmpul nume. Să avem o conversație personală și semnificativă.