Zbudowałem temat dla salonu samochodowego. Każdy samochód jest niestandardowym typem postu („pojazd”) i ma około 12 niestandardowych pól z takimi elementami, jak marka, model, przebieg, rodzaj paliwa itp.
Zasadniczo na stronie głównej chcę formularz wyszukiwania, który ma rozwijane listy marek i modeli i zawiera wszelkie dostępne marki lub modele.
Chcę też, aby zawierały 2 opcje na rok, aby użytkownik końcowy mógł wybrać „2006” i „2012”, a wyniki wyszukiwania zawierają wszystkie pojazdy z rokiem pomiędzy tymi dwiema liczbami.
Czy istnieje wtyczka, która może to zrobić?
Dziękuję za wszelką pomoc .. doprowadza mnie to do szaleństwa od wielu godzin !!!!
custom-post-types
search
absdigital
źródło
źródło
Odpowiedzi:
Krok 1
Zacznij od utworzenia formularza wyszukiwania zaawansowanego, w którym chcesz, aby użytkownik wchodził w interakcję ze stroną internetową i zapisz go z nazwą (tj. Zapisałem go jako
advanced-searchform.php
- ale nie zapisuj go, asearchform.php
wtedy zastąpi domyślny formularz wyszukiwania WordPressa ):Następnie wywołaj formularz w szablonie w następujący sposób:
Teraz twój formularz wyszukiwania jest gotowy i możesz teraz użyć formularza wyszukiwania i wprowadzić dane użytkownika do adresu URL.
Krok 2
Potrzebne jest tylko: zapytanie do bazy danych i zapytanie o typ postu i jego pola niestandardowe zgodnie z zapytaniem wyszukiwania . Pamiętaj, że zapytanie jest teraz adresem URL otrzymanym po przesłaniu formularza. Teraz poproś WordPress o załadowanie niestandardowej strony wyników wyszukiwania po przesłaniu formularza. Umieść następującą funkcję w swojej,
functions.php
aby włączyć niestandardowy szablon wyszukiwania zamiast domyślnegosearch.php
:Przyniosłem kod gdzieś z WPSE (zapomniałem roota), ale użycie powyższego kodu budzi kontrowersje. Ale tak naprawdę działa ( kiepska wymówka oczywiście ).
Sprawdź inny sposób sugerowany przez @GM.
Krok 3
Utwórz nowy plik i zapisz go za pomocą
advanced-search-result.php
(ponieważ używaliśmy tej nazwy wfunctions.php
), a teraz jesteś wolny - oczywiście. Koncepcja to:WP_Query()
(jeśli twoje zapytanie jest złożone, użyj$wpdb
zapytania),Próbka może być:
Oto twoja ostatnia rzecz. Ale wciąż istnieje wiele wyzwań:
$wpdb
niestandardowego zapytania SQL dla złożonego wyniku wyszukiwania, który będzie czystym MySQL - WordPress nie ma tam nic.page.php
(lubsearch.php
) i na tej podstawie utworzyć tę stronę.Masz pomysł, teraz twoja kolej na odkrycie i odkrycie drogi . Pamiętajcie, że każdy jest inny. Stwórz swój, abym mógł pójść za tobą. :)
źródło
WP_Query()
niestandardowych parametrów pola i zapętl wynik, aby wyświetlić<option>
s.pre_get_posts
haka, a nie dodatkowej pętli.Chociaż odpowiedź @ MayeenulIslam może działać, myślę, że poprawnym sposobem wyszukiwania zaawansowanego jest użycie
pre_get_posts
haka akcji.Krok 1: Formularz wyszukiwania
Ten krok równać do kroku 1 w drugiej odpowiedzi, po prostu zmienił
id
wname
polu (<input type="text" ...>
używany wyszukiwania do na „S” , więc będzie on używany bezpośrednio jako pola wyszukiwania. Zapisz ten kod wadvanced-searchform.php
ramach katalogu tematycznego. Następnie zastosowanieget_template_part( 'advanced', 'searchform' );
do załaduj go tam, gdzie ma się pojawiać w motywie:Krok 2: Dodaj filtry do wyszukiwanego zapytania
Krok 3: Szablon (opcjonalnie)
Dzięki tej metodzie domyślny szablon wyszukiwania WordPress będzie używany do filtrowania wyników bez potrzeby dodatkowego zapytania. Jeśli chcesz użyć innego szablonu do wyszukiwania zaawansowanego, możesz użyć
template_include
filtra. Na przykład jeśli chcesz użyćadvanced-search-template.php
pliku jako szablonu wyników z formularza wyszukiwania zaawansowanego:źródło