Jak działa podstawowy routing wp? Trudno mi zrozumieć ... W MVC Twój adres URL wygląda jak mój mikrokontroler / myaction, który jest mapowany na MyController-> myaction ()
W drupal jest to index.php? Q = mycustomerpath / hello, które można zamapować na dowolną funkcję, która Ci się podoba, która zwraca treść „tematyczną” do układu motywu.
Ale w wp nie mam pojęcia, jak to się robi ... to? P = 1, a potem? Produkt = 1 ... Szukałem dokumentacji przepływu routingu, ale nie mogę jej znaleźć (Google zwraca tylko artykuły na temat niestandardowych trasy) .. chcę najpierw zrozumieć podstawy rutowania
Odpowiedzi:
W WordPress adresy URL nie są mapowane na trasy. Odwzorowują na zapytania do bazy danych.
Kiedy używasz WordPress w „domyślnym” trybie bezpośredniego połączenia, masz zestaw zmiennych w głównym zapytaniu URL, takich jak? P = 1 lub? Page = 234 i tak dalej. Jest też? S = szukaj i wiele innych.
Jeśli używasz „ładnych” bezpośrednich linków, tworzony jest duży zestaw reguł zwanych „regułami przepisywania”, które bezpośrednio mapują różne wzorce adresów URL na ten sam zestaw parametrów adresów URL. Tak więc adres URL taki jak / 2014/04/12 / example będzie mapowany na? Rok = 2014 i miesiąc = 04 i dzień = 12 i nazwa postu = przykład lub podobny. Zatem po ich odwzorowaniu dotyczy to również tych.
Zmienne te zasadniczo kontrolują główną instancję klasy WP_Query. Klasa WP_Query przechowuje wszystkie informacje, które budują zapytanie do bazy danych, aby uzyskać „posty” z bazy danych. Różne przekazane do niego parametry kontrolują, jakie zapytanie tworzy i jakie dane otrzymuje.
Widzisz, wszystko, co może być wyświetlane przez WordPress, jest zasadniczo „postem”. Blog to seria postów w odwrotnym porządku czasowym. „Strona” jest statycznym postem o określonej nazwie. „Niestandardowy typ postu” jest dokładnie tak, jak to brzmi, „post” z niestandardowym typem, który zdefiniujesz. Wszystkie główne zapytania do wyświetlenia czegokolwiek w WordPress otrzymują pewien podzbiór postów z tabeli wp_posts.
To właśnie robi WP_Query. A parametry z adresu URL są wysyłane bezpośrednio do tego głównego zapytania i tam używane.
Następnie motyw określa szablon, którego należy użyć, na podstawie tego, z którego pochodzi zapytanie. Jeśli poprosiłeś / category / example, to staje się to? Nazwa_kategorii = przykład, co oznacza, że główna tablica $ wp_query-> query_vars otrzyma tę informację, a WP_Query wyciągnie ostatnie X postów dla kategorii „przykład”, i to ustawi flagę is_category na true.
Program ładujący szablony uruchomi się po tym, zobaczy, że is_category () zwraca true, i zdecyduje się wybrać szablon kategorii, więc wyszuka kategorię example.php i wróci do kategorii.php itd., Zgodnie z szablonem Hierarchia.
Pytanie, czy chcesz zmienić sposób działania adresów URL, jest proste: czy chcesz zmienić adresy URL lub do czego są one mapowane? Ponieważ adresy URL nie są mapowane na funkcje, są one mapowane na parametry sterujące zapytaniem. Jeśli chcesz, aby adres URL dostosował to główne zapytanie, jest to nieco inny proces niż w przypadku, gdy chcesz, aby specjalny adres URL uruchamiał zupełnie inny specjalny kod.
Aby odpowiedzieć na konkretne pytanie w komentarzach: „czy nie ma przypadków, w których nie chcesz wyświetlać postów?” Nie, nie ma. Wszystko jest postem. Cała zawartość jest przechowywana w postach. Jeśli chcesz przechowywać treści gdzie indziej i być innym, możesz to zrobić, ale jest to trudniejsze, ponieważ, szczerze mówiąc, zwykle nie jest to konieczne. Jeśli masz specjalną treść, stwórz niestandardowy typ postu, przechowuj treść jako post z tym typem, zamapuj na niego wzorzec adresu URL. Łatwo.
źródło