rozwój wtyczek – Wyszukiwanie: jak rozszerzyć istniejące wyszukiwanie o niestandardową tabelę
WordPress Development Stack Exchange to strona z pytaniami i odpowiedziami dla programistów i administratorów WordPress. Rejestracja zajmuje tylko minutę.
Zarejestruj się, aby dołączyć do tej społeczności
Każdy może zadać pytanie
Każdy może odpowiedzieć
Najlepsze odpowiedzi są głosowane i wznoszą się na szczyt
Zapytał
Oglądane764 razy
Utworzyłem niestandardową tabelę „produkty” z następującym polem: tytuł, opis, adres URL. Elementy przechowywane w tabeli są importowane.
Chciałbym rozszerzyć wyszukiwanie wordpress na tę tabelę. Czy można to zrobić?
Domyślnie WordPress wyszukuje według słowa kluczowego. Oznacza to, że po przejściu zapytania wyszukiwania „Loren Ipsum” WordPress tworzy następującą klauzulę WHERE:
((wp_posts.post_title LIKE '%Loren%') OR
(wp_posts.post_content LIKE '%Loren%'))
AND
((wp_posts.post_title LIKE '%Ipsum%') OR
(wp_posts.post_content LIKE '%Ipsum%'))
Ta odpowiedź może ci się przydać! Istnieje również wtyczka do tego: Przeszukaj wszystko
Zależy jak chcesz to zrobić. Obecnie tworzę witrynę z niestandardowym wyszukiwaniem. Zrobiłem to w kilku krokach.
- Pomyśl o preferowanym adresie URL: www.example.com/search/< nazwa_produktu >
- Utwórz szablon wordpress dla niestandardowego wyszukiwania.
- Dodaj stronę z odpowiednim szablonem. Zanotuj identyfikator strony
-
Dodaj do niego potrzebne tagi przepisywania. Użyjesz ich później w swoim szablonie wyszukiwania:
add_action('init','custom_rewrite_tags'); function custom_rewrite_tags() { add_rewrite_tag('%var%','([^&]+)'); }
-
Teraz możesz utworzyć przepisanie, aby wyszukiwanie było ładnym adresem URL według twoich upodobań
add_action('admin_init','action_custom_rewrite_rules'); function action_custom_rewrite_rules() { add_rewrite_rule('^search/([^&]+)/?$','index.php?page_id=<the page id>&var=$matches[1]','top'); }
Reguła dodawania przepisywania określa wyrażenie regularne, które ma być dopasowane do adresu URL, oraz odpowiadające mu zapytanie, które wyśle do index.php. Przechwycone wyrażenia regularne są zapamiętywane w zmiennej $matches, zaczynając od indeksu 1 pierwszej przechwyconej grupy. W tym przypadku czymkolwiek jest www.example.com/search/< here >/ . Przypisujemy dopasowania do Twojego niestandardowego tagu przepisywania.
-
Teraz w szablonie wyszukiwania możesz uruchomić funkcję, która będzie miała dostęp do tagów przepisywania. Przykład, zwróci twoją zmienną. Jeśli nie lubisz ładnych adresów URL, zawsze możesz wyszukiwać za pomocą get_query:
/* * Template name: Custom Search Template */ $var = get_query_var('var');
-
A teraz zapytanie
$sql = $wpdb->prepare("SELECT * FROM myTable WHERE var = %s", $var); $results = $wpdb->get_results($sql);
A w wynikach masz swoje wyniki, rób z nimi co chcesz.
domyślna