Jak lepiej zarządzać wyszukiwaniem na stronie?

  • Poziom trudności:

Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:

Domyślnie standardowa wyszukiwarka w WordPressie pozwala na wyszukiwanie w treściach wpisów oraz stron. Ponieważ treści umieszczone w części blogowej są często bardziej wartościowe, a na stronach znajdują się mniej istotne statyczne treści, dlatego możesz ograniczyć wyniki wyszukiwania tylko do wpisów. Poniższy poradnik pomoże Ci w szybki sposób wyselekcjonować wpisy, strony albo wpisy i strony z wyników wyszukiwania. Podpowiem również w jaki sposób wprowadzić podpowiedzi do wyszukiwarki tak aby ułatwić znalezienie materiałów najbardziej istotnych.

Wpisy/strony w wynikach wyszukiwania

Na początku wejdź do Wygląd -> Edytor i zacznij edytować plik functions.php. W dowolnym miejscu w ramach znaczników PHP dodaj jeden z wybranych fragmentów kodu.

Jeśli chcesz aby w wynikach wyszukiwania wyświetlały się tylko wpisy:

function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}

add_filter('pre_get_posts','SearchFilter');

Jeśli chcesz aby w wynikach wyszukiwania wyświetlały się tylko strony:

function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'page');
}
return $query;
}

add_filter('pre_get_posts','SearchFilter');

Jeśli chcesz aby w wynikach wyszukiwania wyświetlały się wpisy oraz strony:

function SearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', array(post,page));
}
return $query;
}

add_filter('pre_get_posts','SearchFilter');

Powyższe fragmenty kodu różnią się tylko 3 linią. Przeanalizuj ten fragment aby lepiej go zrozumieć. Kluczowe znaczenie ma tu informacja, czy wyniki wyszukiwania mają zawierać post_type: post czy page. Jeśli mają zawierać jeden i drugi rodzaj post_type, wtedy należy wykonać prostą tablicę składającą się z tych dwóch elementów.

Automatyczne podpowiedzi w polu wyszukiwania

Tak bardzo lubimy usługę Google Search dlatego że oprócz podsyłania nam odnośników do najbardziej wartościowych treści zawiera również automatyczne podpowiedzi bazujące na popularnych wynikach lub frazach najczęściej odwiedzanych. Dobrą praktyką popularnych stron internetowych jest umieszczenie takiej listy podpowiedzi, które będą sugerowane w momencie kiedy użytkownik wpisze fragment jednej z nich. Aby umożliwić takie rozwiązanie należy wkleić poniższy fragment kodu pomiędzy znacznikami <head> i </head> w pliku header.php:

<script type="text/javascript">
 $(function() {
 var availableTags = [
 "Podpowiedź nr 1",
 "Podpowiedź nr 2",
 "Podpowiedź nr 3",
 "Podpowiedź nr 4",
 "Podpowiedź nr 5 bez przecinka na końcu"
 ];
 $( "#tags" ).autocomplete({
 source: availableTags
 });
 });
 </script>

Oczywiście listę podpowiedzi (linie 4-8 można dowolnie rozwijać, należy jednak pamiętać że każda linia za wyjątkiem ostatniej powinna posiadać na końcu przecinek). Aby automatyczne podpowiedzi działały należy do elementu, w którym wpisujemy frazy z autopodpowiedzią dopisać id=”tags”. W moim przypadku konieczna była edycja pliku searchform.php ale u Ciebie szablon edycji formularza do wyszukiwarki może znajdować się w zupełnie innym miejscu.

Domyślny plik searchform.php, który możesz stworzyć i dodać do Twojego szablonu według dokumentacji WordPressa ma następującą postać:

<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
	<div>
		<label class="screen-reader-text" for="s"><?php _x( 'Search for:', 'label' ); ?></label>
		<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" />
		<input type="submit" id="searchsubmit" value="<?php echo esc_attr_x( 'Search', 'submit button' ); ?>" />
	</div>
</form>

Po mojej modyfikacji linia 4 wyglądała w następujący sposób:

<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="tags" />

Dzięki tej drobnej modyfikacji poniżej pola do wpisywania wyszukiwanych fraz zaczęły się pojawiać podpowiedzi.

UDOSTĘPNIJ

Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej: