W tym samouczku podzielimy się tym, jak dodać prostą funkcję na stronie wyszukiwania, która wyświetli wyszukiwane hasło i liczbę wyników. Ta funkcja była specjalną prośbą jednego z naszych użytkowników za pośrednictwem poczty elektronicznej. Jeśli chcesz, abyśmy poruszyli jakiś temat, śmiało zgłoś sugestię.

Otwórz plik search.php w swoim motywie i dodaj następujący kod:
<h2 class="pagetitle">Search Result for <?php /* Search Count */ $allsearch = new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('</span>'); _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?></h2>
Powyższy kod wyświetli coś takiego:
Wyniki wyszukiwania dla twitter — 15 artykułów
Możesz również podświetlić wyszukiwane hasło, dodając klasę CSS .search-terms do arkusza stylów swojego motywu. Oto prosty kod CSS, który pomoże Ci zacząć:
.search-terms {
background-color:yellow;
color:blue;
}
To tylko jedna z fajnych rzeczy, które możesz zrobić dla swojej strony wyszukiwania podczas jej dostosowywania. Możesz również podświetlić terminy wyszukiwania w wynikach, a nawet dodać funkcję wyszukiwania według kategorii do wyszukiwania w WordPress.
Źródło: Michael Martin


Aniruddh
Czy mogę użyć tego kodu w pliku sidebar.php? Ponieważ muszę pokazać termin wyszukiwania i liczbę wyników w pasku bocznym. Proszę o pomoc.
Marco
thanks a lot for this snippet!
zgodnie z kodeksem wp funkcja wp_specialchars jest przestarzała. mówi, że należy użyć esc_html zamiast tego.
pozdrawiam,
marco
Marco
Następnym razem dokładnie przyjrzę się komentarzom. CHADHAYTON już opublikował link, jak można sobie z tym teraz poradzić.
Henry
echo $wp_query->found_posts;
Dodanie tego na górze strony wyszukiwania wyświetli liczbę postów znalezionych dla danego zapytania.
echo get_search_query();
To wyświetli termin wyszukiwania (wprowadzony do pola wyszukiwania przez odwiedzającego Twoją stronę).
timer_stop(1);
To wyświetli czas potrzebny na wykonanie wyszukiwania.
Łącznie można uzyskać coś takiego:
Twoje wyszukiwanie "kawa ziarnista" zwróciło "16" postów w "0.87" sekundy.
jameslhf
Thank you Henry, that helped me!
Prasanna
Dzięki Henry. Bardzo mi to pomogło.
chadhayton
Trudno powiedzieć, jak stary jest ten wpis, ale WordPress 3.1 zawiera sposób na uzyskanie całkowitej liczby wyników wyszukiwania, który nie wymaga osobnego zapytania:
http://codex.wordpress.org/Creating_a_Search_Page#Display_Total_Results
Chris Murphy
Wow. To znacznie prostsze niż liczenie wyników wyszukiwania WordPressa, tutaj:
global $wp_query; $count = sizeof( $wp_query->posts ); echo"<pre>"; //var_dump($wp_query);// The WP Query Object var_dump($wp_query->posts); // The WP Query Object's 'posts' property (note the plural) echo"</pre>";Jeśli umieścisz ten fragment w swoim szablonie wyszukiwania, wyświetli on właściwości zmiennej „$wp_query”, w szczególności właściwość „posts” obiektu. Jest to tablica przechowująca kolekcję zwróconych postów z zapytania wyszukiwania, z którą możesz zrobić wiele rzeczy po uzyskaniu do niej dostępu, w tym (*werble*), *policzyć* liczbę postów w tej tablicy za pomocą funkcji PHP „count()” lub „sizeof()”.
Personel redakcyjny
Twój kod jest trochę ucięty. Czy możesz przesłać nam fragment e-mailem, a my spróbujemy go przetestować i napisać o nim. Oczywiście pełne uznanie zostanie Ci przyznane.
Admin
Ilya
Chris,
To nie zadziała. Chodzi o znalezienie całkowitej liczby wyników pasujących do zapytania – a nie liczby aktualnie pobranych. Jeśli jest więcej wyników niż „mieści się” na stronie, Twój kod pobierze tylko liczbę elementów na stronie.
pete
Wyniki wyszukiwania są kwestią osobistą dla użytkownika, więc dobrze jest, gdy otrzyma on dużo informacji.
basilakis
So the code is right or not?
I see Konstantin has some point about the query, but the comments “ate” the results!
Personel redakcyjny
Ten kod jest poprawny. Działa, jedynym problemem, na który zwraca uwagę, jest to, że można to zrobić inaczej. Użyliśmy tego kodu na stronie klienta i działa.
Admin
Konstantin
Dobry pomysł. Złe wykonanie.
Po co w ogóle tłumaczyć tag span???
A mój ulubiony:
_e('');Co??Po co chcesz wyszukiwać to samo dwa razy?
Nie ma to żadnego sensu.
Ale nie chcę nienawidzić, tak powinno się to robić (moim skromnym zdaniem):
post_count); ?>
Tom
Naprawdę nie poświęcam wystarczająco dużo uwagi wyszukiwaniu na mojej stronie. Coś takiego jest świetne, ponieważ sprawia, że strona jest bardziej spersonalizowana.