Obecnie próbuję utworzyć funkcję wyszukiwania wordpress, która wyświetla wyniki na żywo pod paskiem wyszukiwania. Istnieje przykład na stronie internetowej Banku Światowego (ekrany poniżej). Nie szukam autouzupełniania, które można znaleźć w Google.com, które uzupełnia wpisywane słowa, ale chcę, aby znajdowało rzeczywiste posty w witrynie.
Próbowałem zrobić przeglądanie za pomocą Wordpress Answers i innych podobnych zasobów, ale natknąłem się tylko na wdrożenie wyszukiwania typu Google, które nie jest tym, czego szukam. Każda pomoc lub punkty we właściwym kierunku byłyby bardzo mile widziane.
Odpowiedzi:
Poniższe informacje wykorzystują autouzupełnianie interfejsu użytkownika jQuery, które jest zawarte w WordPress od 3.3. (Pożyczyłem format od @Rarst : D).
Nadal nie jest to dokładnie to, czego szukasz, ale stanowi dobry punkt wyjścia. W poniższym przykładzie użyto podstawowej stylizacji interfejsu użytkownika jQuery, ale można użyć tej, która jest obecnie opracowywana dla trac i wywołać ją z folderu wtyczki.
źródło
Ok, to byłby bardzo prosty przykładowy kod, który używa natywnego
suggest.js
WP core dla Ajax i wiąże się z domyślną formą wyszukiwania (z niezmodyfikowanegoget_search_form()
wywołania). Nie jest to dokładnie to, o co prosiłeś, ale wyszukiwanie przyrostowe jest ogromnym bólem, aby stać się doskonałym. :)źródło
Musisz to zrobić oczywiście za pomocą Ajax, ale tutaj jest problem. Ponieważ WordPress używa MySQL, możesz przeciążać serwer wyszukiwaniem, jeśli spróbujesz wypełnić wyszukiwanie prawdziwymi zapytaniami do bazy danych przez Ajax, ale możesz stworzyć system, w którym wszystkie posty są zapisywane w jednym dużym „wp_options” pole, a następnie, gdy wyszukiwanie jest zakończone, wyszukujesz z niego zapytanie zamiast prawdziwego wyszukiwania. Pamiętaj jednak, że musisz aktualizować ten fragment tekstu / serializowanej zmiennej za każdym razem, gdy tworzysz lub edytujesz post.
Jeśli nie chcesz poświęcić trochę czasu na opracowanie tego rozwiązania, nie polecam wykonywania tego rodzaju „wyszukiwania na żywo”.
źródło