Jak wykluczyć strony z wyników wyszukiwania w WordPressie

Jeśli korzystasz z wyszukiwarki na swojej stronie WordPress i klikniesz enter, przejdziesz do strony z wynikami wyszukiwania, której adres URL zawiera ciąg ?s=szukana+fraza. Na stronie pojawią się wpisy, strony, produkty WooCommerce (jeśli korzystasz z wtyczki WooCommerce) itd. Istny miszmasz.

Da się z tym jednak zrobić porządek. Możesz sprawić, że wyszukiwarka wyszuka tylko wpisy. Albo wykluczy konkretne strony z wyszukiwania.

Szukaj tylko wśród wpisów

Poniższy kod ograniczy wyszukiwanie tylko do wpisów. Strony, produkty itp. nie pojawią się w wynikach wyszukiwania. Wklej kod do pliku functions.php w Twoim motywie potomnym.

add_action( 'pre_get_posts', function($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_search ) {
    $query->set( 'post_type', 'post' );
  }
} );

Szukaj tylko wśród stron

Poniższy kod sprawi natomiast, że WordPress będzie wyszukiwał tylko wśród stron:

add_action( 'pre_get_posts', function($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_search ) {
    $query->set( 'post_type', 'page' );
  }
} );

Wyklucz konkretne strony z wyszukiwania

Jeśli chcesz, aby WordPress szukał wśród wszystkich rodzajów wpisów, ale pomijał np. stronę kontaktową, użyj takiego kodu:

add_action( 'pre_get_posts', function($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_search ) {
    $query->set( 'post__not_in', array(11) );
  }
} );

W powyższym przykładzie „11” to ID strony „Kontakt”. Aby wykluczyć więcej strony, dodaj ich ID po przecinku:

add_action( 'pre_get_posts', function($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_search ) {
    $query->set( 'post__not_in', array(11, 17, 34) );
  }
} );
Pani Marta
Jestem Marta. Pani Marta. Na moim blogu dzielę się prostymi sposobami na bezwtyczkowe ulepszenie swojej strony WordPress. Jeśli brakuje Ci czegoś w tym wpisie lub chcesz, abym poruszyła temat, na którym Ci zależy, daj znać w komentarzu!

Dodaj komentarz

*

*

*

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *