API Rewrite dla WordPress jest ważną funkcją, o której prawdopodobnie nie czytasz zbyt wiele, ale bez wątpienia używasz, nawet nie zdając sobie z tego sprawy.

API zapewnia funkcjonalność tworzenia własnych unikalnych linków-permalinks – dla Twojej witryny.

W tym samouczku wyjaśnię permalinks dogłębnie-czym są, dlaczego są trwałe, ich możliwe struktury i jak można je przepisać w formie zrozumiałej zarówno dla ludzi, jak i maszyn. Wyjaśnię również kilka kluczowych pojęć stojących za permalinks w WordPress, najpierw patrząc na to, jak dodawać zmienne do nieoptymalizowanych adresów URL i jak używać tych zmiennych i ich wartości do odpytywania bazy danych. Później zbadamy przepisywanie adresów URL i jak zbudować najlepszą strukturę dla pretty permalinks.

Zaczynajmy!

Adresy URL są narzędziem służącym do wysyłania żądań HTTP GET przez Internet. Dokładniej, metoda GET przekazuje klucz=wartość pary w adresie URL, aby uzyskać odpowiedź z określonego zasobu (przeczytaj więcej na ten temat na W3Schools).

Weź następujący adres URL:

http://example.com/?p=123

Znak zapytania dzieli ten adres URL na dwie części. Pierwsza część to nazwa domeny, druga część to łańcuch zapytań, który jest zbiorem zmiennych zapytania i wartości określających zasób żądany przez użytkownika. Łańcuch zapytania identyfikuje zasób, ale nie mówi nam nic o jego zawartości. Można powiedzieć, że nie ma znaczenia semantycznego dla ludzi i maszyn.

Dzięki API Rewrite możemy tłumaczyć nie semantyczne adresy URL na ich semantyczny odpowiednik za pomocą operacji przepisywania adresów URL. Reguła przepisywania przetłumaczyłaby poprzedni adres URL na następującą strukturę:

http://example.com/category/post-title/

Dzięki kategorii i tytułowi postu w adresie URL struktura ta dokładniej opisuje zawartość zasobów zarówno dla ludzi, jak i wyszukiwarek, co skutkuje użytecznym, dostępnym i przyjaznym dla SEO adresem URL. Można go zakładać, udostępniać i przechowywać na wiele sposobów i nigdy nie powinno się zmieniać w dłuższej perspektywie, aby połączony zasób mógł być na stałe ukierunkowany. Dlatego nazywamy je permalinks.

Budowanie adresów URL w WordPress: Query Vars i ciągi zapytań

Możemy poprosić WordPressa o pobranie prawie wszystkiego z bazy danych witryny. Zazwyczaj wyszukujesz posty w określonej kategorii lub oznaczone precyzyjnym tagiem lub opublikowane w określonym czasie. Gdy użytkownik przesyła adres URL, WordPress automatycznie obsługuje żądanie i, zgodnie z regułami hierarchii szablonów, pokazuje wyniki na jednej stronie lub w archiwum.

W pierwszej części tego postu pokażę Ci, jak korzystać z wbudowanych zmiennych ciągu zapytań i jak zarejestrować własne zmienne niestandardowe, poinstruujemy WordPress, aby pobrać te zmienne z adresów URL i użyć ich do odpytywania bazy danych, a następnie wyprowadzimy wynikową listę postów na niestandardową stronę archiwum.

W ostatniej części tego postu pokażę Ci narzędzia, które zapewnia nam WordPress, aby przetłumaczyć te semantycznie niezrozumiałe ciągi zapytań na znaczące, dostępne, użyteczne i zoptymalizowane pod kątem SEO permalinks. Dam ci również przegląd domyślnych i niestandardowych struktur permalink dostarczonych przez WordPress, a na koniec zbudujemy niestandardowe dość permalinks za pomocą Rewrite API.

Zapytania publiczne i prywatne Vars

Kwerendy vars to klucze, które definiują każde zapytanie SQL WordPress działa przeciwko bazie danych. Zmienne te dzielą się na dwie główne kategorie, w zależności od sposobu, w jaki możemy z nich korzystać. Zapytanie prywatne vars można ustawić tylko w skrypcie, podczas gdy zapytania publiczne vars można wysłać do WordPress z ciągiem zapytań.

Oprócz zmiennych publicznych i prywatnych, WordPress pozwala nam zarejestrować własne zapytania niestandardowe vars.

W adresie URL zmienne zapytania publicznego są kluczami znajdującymi się za znakiem zapytania (ciągiem zapytania) i są widoczne, gdy nie włączyliśmy opcji Pretty permalinks na stronie Ustawienia → Permalinks admin. Poniższy adres URL jest przykładem:

example.com/?author_name=carlodaniele

author_name jest publicznym zapytaniem var informującym WordPressa, że użytkownik szuka wszystkich postów użytkownika carlodaniele. Możemy dodać kilka zmiennych zapytań publicznych do ciągu zapytań, tak jak to robimy w następującym adresie URL:

example.com/?author_name=carlodaniele&tag=toolbar

Teraz WordPress otrzyma wszystkie posty przez carlodaniele and tagged as pasek narzędzi. I możemy zrobić jeszcze więcej. Następny ciąg zapytania jest kombinacją niestandardowego typu post i taxonomy-name=taxonomy-term para.

example.com/?post_type=food&food-family=greens

W przeciwieństwie do zmiennych publicznych, zmienne zapytań prywatnych mogą być używane tylko w skrypcie. Z tego powodu nie będę ich eksplorował w tym poście (możesz przeczytać więcej w Kodeksie WordPress). Tutaj po prostu zaznaczę, że poniższy URL nie da nam oczekiwanego rezultatu:

example.com/?author__in=2, 4, 6

Proszę. autor _ _ w jest prywatnym zapytaniem var, a WordPress nie wyświetli postów określonych autorów.

Większość razy, dzięki Public query vars, nie musimy pisać kodu do zarządzania żądaniami użytkownika, wystarczy zbudować odpowiednie ciągi zapytań, a WordPress zrobi resztę.

Teraz zapoznaj się z poniższą listą publicznych var:

Ładowanie gist eb34d6c85bbf95f31839f7a98c1d0951

Możemy pobierać posty według typu, autora, kategorii, tagu, taksonomii, roku, miesiąca, dnia i tak dalej. Mamy zapytanie var dla prawie każdego rodzaju zapytania. Brakuje tu jednak możliwości budowania zapytań w oparciu o niestandardowe pola (nazywamy je zapytaniami meta). W rzeczywistości WordPress zapewnia meta_key oraz meta_value zapytuje zmienne, ale należą do prywatnej grupy zmiennych, więc nie są dostępne dla żądań URL i powinny być używane tylko w skryptach. Jak więc możemy prosić o zapytania meta z ciągów zapytań URL?

Pierwszym krokiem jest zarejestrowanie nowych zmiennych zapytań.

Zapytania Niestandardowe Vars

Po zarejestrowaniu zmienne te mogą mieć miejsce w łańcuchu zapytań, tak jak każda inna zmienna zapytania publicznego. Poniższa funkcja pokazuje nam, jak dodać je do listy:

Ładowanie gist b34dfcdb0300b70a8efa450a429c1347

Na query_vars filtr pozwala nam dodawać, usuwać lub edytować istniejące zmienne przed uruchomieniem zapytania. Tutaj właśnie dodaliśmy dwie zmienne niestandardowe i od teraz możemy uzyskać ich wartości dzięki get_query_var() funkcja:

Wczytywanie gist 31e1b1c5e3d55bffbfb5bf8ef56c8a2a

Teraz wartości zapytania var są dostępne do zbudowania niestandardowego zapytania.

Tylko słowo na temat WP_Query Klasa…

Gdy użytkownik prosi o określony zasób, będący pojedynczą stroną, wynikiem wyszukiwania lub listą postów, WordPress tworzy nową instancję WP_Query obiekt, którego metody pozwalają nam manipulować rzeczywistym zapytaniem SQL przed jego wykonaniem.

Zakładam, że znasz WP_Query klasy. Jeśli nie, przed przeczytaniem tego posta poświęć czas na sprawdzenie naszego szczegółowego przewodnika po zdobywaniu WP_Query.

Budowanie niestandardowego zapytania (Meta)

Mamy kilka parametrów, które pozwalają nam ustawić niestandardowe Zapytanie o pola, takie jak meta_query argument, który jest wielowymiarową tablicą pojedynczych zapytań meta z następującymi kluczami:

  • klucz (string)- niestandardowy klucz pola
  • wartość (string / array)- niestandardowa wartość pola
  • Typ (string)- niestandardowy typ pola
  • porównaj (string)- operator porównawczy

Jako przykład możemy ustawić następujące meta_query argument:

Wczytywanie gist 9e23a51816cc03eba9db89d4a4ee8add

"relacja" jest opcjonalnym elementem ustawiającym zależność logiczną pomiędzy pojedynczymi zapytaniami (domyślnie "I").

Poza pętlą WordPress (czyli w pliku wtyczki) możemy przekazać tablicę do zestaw metoda $ zapytanie obiekt w następujący sposób:

Ładowanie gist ba0050977cd2b36a9daab9c045d89080

Na zestaw metoda zachowuje dwa argumenty: nazwę zmiennej zapytania oraz jej wartość.

Aby wpłynąć na zapytanie, zmienilibyśmy je po utworzeniu zapytania, ale przed jego wykonaniem. Aby wykonać to zadanie, podłączymy funkcję zwrotną do pre_get_posts akcja.

Poniższy przykład pokazuje, jak to wszystko działa:

Ładowanie gist 5e3da325e66c63733919edd5ecd8677c

Ważne jest, aby pamiętać, że $ zapytanie obiekt jest przekazywany do funkcji przez odniesienie, a nie przez wartość. Oznacza to, że wszelkie zmiany w $ zapytanie obiekt wpływa bezpośrednio na oryginalne zapytanie, a nie tylko na instancję zapytania. W związku z tym dobrą praktyką jest upewnienie się, że edytujemy tylko główne zapytanie (! $query->is_main_query()), a zmiany nie wpływają na zapytania administratora (is_admin()). W razie potrzeby możemy sprawdzić inne warunki, aby mieć pewność, że główne zapytanie zostanie zmienione wyłącznie na określonych stronach (np. is_post_type_archive ()).

Załóżmy teraz, że wszystko, o czym mówiliśmy do tej pory, to działający przykład.

Wyświetlanie postów według pól niestandardowych

Powiedz, że chcesz zbudować katalog książek za pomocą WordPress. W tym celu możesz zarejestrować niestandardowy typ postu o nazwie książka dodanie kilku niestandardowych pól, takich jak author_name, autor_surname, wydawca, i tak dalej. I powiedzieć, że chcesz udostępniać użytkownikom serwisu linki do stron archiwalnych przez autor_surname.

Teraz wiemy, co robić. Najpierw musimy zarejestrować zapytanie var nazywając je książka-autor:

Ładowanie gist 1cd370a7d74ac154b8ae63c9a452d56d

Zauważ, że niestandardowa zmienna zapytania została nazwana książka-autor i nie autor, który jest terminem zastrzeżonym dla autorów postów (Zobacz pełną listę terminów zastrzeżonych w Kodeksie). Teraz WordPress jest świadomy zapytania var i możemy uzyskać jego wartość z adresu URL dzięki get_query_var funkcja.

Rozważmy teraz następującą funkcję podłączoną do pre_get_posts:

Ładowanie gist c1ed24c612ccb2f0977011c2193e1ca4

get_query_var() pobiera wartość "książka-autor". Jeśli jest to możliwe, wartość ta jest wpychana do $meta_query array.

Ustawiliśmy wartość dla "relacja" element również, na wypadek gdybyśmy ustawili więcej niż jedno zapytanie meta.

Wreszcie, the zestaw metoda przekazuje tablicę parametrów do $ zapytanie obiektu, zmieniając zapytanie przed jego wykonaniem.

Teraz możesz wysłać adres URL w następujący sposób:

http://example.com/?post_type=book&book-author=Rowling

I dostaniesz wszystkie książki w archiwum, gdzie pole niestandardowe autor_surname to Rowling.

Z dobrym zrozumieniem WP_Query obiekt i zapytanie vars, możemy uzyskać wszystko z bazy danych po prostu wysyłając odpowiednie adresy URL. Nadszedł czas, aby przepisać te adresy URL do użytecznych, dostępnych i przyjaznych SEO struktur.

WordPress zapewnia trzy struktury permalink:

  • Brzydkie permalinki
  • Pretty permalinks
  • Pathinfo permalinks (index.PHP pojawia się w adresie URL)

Domyślnie WordPress używa brzydkiej struktury permalink. (tj. http://example.com/?post_type=book lub http://example.com/?p=123). Ale wiemy, jak ważna jest struktura Permalink (tj. http://example.com/book/harry-potter-and-the-chamber-of-secrets/), więc przejdź do Ustawienia > Permalinks strona administratora instalacji i ustawienia ulubionej struktury.

Możemy sprawdzić jedną z dostępnych opcji lub ustawić niestandardową strukturę, w której możemy podać jeden lub więcej tagów struktury. Te tagi są słowami kluczowymi, które możemy dodać do permalinków, aby nadać im konkretne znaczenie. Jako przykład, %rok% poinformuje Użytkownika o roku publikacji postu.

WordPress zapewnia domyślne tagi struktury 10, ale możemy dodać dowolną liczbę niestandardowych tagów, po jednym dla każdej niestandardowej zmiennej zapytania, którą wcześniej zarejestrowaliśmy.

Custom permalink structure
Po włączeniu tej struktury nazwa postu zostanie poprzedzona rokiem publikacji.

Biorąc to pod uwagę, naszym ostatnim zadaniem jest zarejestrowanie niestandardowego tagu struktury i poinstruowanie WordPressa, jak z niego korzystać.

Dodawanie Znaczników Rewrite

Zahaczmy następującą funkcję do init działanie:

Ładowanie gist 4c4ea491486ebaca8d9502b847549758

Na add_rewrite_tag funkcja, rejestruje nowy znacznik struktury. Funkcja przechowuje trzy argumenty: nazwę znacznika, Wyrażenie regularne pasujące do nazwy znacznika, opcjonalne zapytanie (nie ustawione tutaj).

Teraz WordPress jest świadomy tego tagu. Musimy tylko zarejestrować regułę przepisywania, która mówi WordPressowi, jak z niej korzystać. Oto kod:

Ładowanie gist f364d707472739bdf61b9ad7f0d61707

Na add_rewrite_rule() funkcja zrobi magię tutaj:

  • Pierwszy argument jest wyrażeniem regularnym dopasowanym do żądanego adresu URL;
  • Drugim argumentem jest adres URL do pobrania, gdy regex jest dopasowany; oraz
  • Ostatnim argumentem jest łańcuch, którego wartość może być albo "top" lub "bottom" ("top" będzie mieć pierwszeństwo przed obowiązującymi przepisami).

Zauważ, że kiedy rejestrujemy niestandardowy typ posta, musimy wywołać flush_rewrite_rules() po aktywacji wtyczki, w przeciwnym razie nowe zasady przepisywania nie będą działać (Czytaj więcej w Kodeksie)

Teraz adres URL jak poniżej:

http://example.com/?post_type=book&book-author=Tolkien

byłoby przepisane w następujący dość permalink:

http://example.com/book/book-author/Tolkien/

Uwaga: zawsze zapisuj ustawienia Permalink podczas dodawania lub edycji przepisywania znaczników i reguł, nawet jeśli nie zmieniłeś struktury permalink, w przeciwnym razie znaczniki i reguły nie będą skuteczne.

Narzędzie dla programistów

Doskonałym narzędziem programistycznym do sprawdzania zapytań vars jest darmowa wtyczka o nazwie Query Monitor. Ta wtyczka pokazuje dopasowane reguły przepisywania i ciągi zapytań, zmienne zapytań, zapytania do bazy danych, Hooki i wiele więcej. Zdecydowanie warto zobaczyć.

Query Monitor
Monitor zapytań dodaje menu w pasku narzędzi WordPress

Wrapping Up

W tym poście przyjrzeliśmy się, jak odpytywać bazę danych WordPress, przekazując wartości z ciągów zapytań URL za pomocą publicznych i niestandardowych zmiennych zapytań. Zbadaliśmy również permalinks z naciskiem na niestandardowe struktury. Na koniec dodaliśmy nowe tagi i reguły przepisywania oraz zbudowaliśmy przyjazne dla użytkownika i SEO adresy URL.

Mam nadzieję, że ten samouczek okazał się pomocny i możesz teraz dostosować własną strukturę adresu URL do swoich potrzeb.

Masz do czynienia z permalinks w WordPress? Podziel się swoimi doświadczeniami, przykładami i pytaniami w komentarzach poniżej.

Tagi:

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd “nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

9 Najlepsze Darmowe Wtyczki WordPress Author Bio Box

W artykule: 1. Simple Author Box2. Branda3. Autor postu WP4. Author Bio…