Mam wieloetapowy proces, który integruje złożone aspekty w zapytaniach WP. Problem w tym, że im bardziej się pogłębiam, tym bardziej jestem rozmyty na temat tego, jak powinien działać, i mogłem skorzystać z wytycznej, zamiast być pomysłowym (i wykopać sobie dziurę).
Ogólne etapy, które mam (pseudo-kod, ale zbliżony do rzeczywistego):
- pobierać wartość z adresu URL (coś prostego jak
person=1
) - przetwarzaj wartość i dołącz niestandardowe instrukcje zapytania (
$relationship_query[] = array('relationship' => 'person_to_cat', 'object' => 1 );
) - pobierz końcowe instrukcje niestandardowego zapytania i wygeneruj odpowiednie dyrektywy SQL
Do tej pory mam wiele takich wydarzeń (relacje, taksonomie, daty) i stają się one niestabilne (jeden róg kodu nie nadaje wartości tam, gdzie oczekuje się go w innym rogu kodu i wszystko się rozpada).
Tak duże pytanie brzmi - jaki jest odpowiedni protokół do przekazywania, odbierania, przechowywania i przetwarzania niestandardowych danych do WP za pośrednictwem adresu URL ?
Mniejsze części:
- jak upewnić się, że nie koliduję z elementami wewnętrznymi WP?
- gdzie i jak przechowuję dane pośredniczące?
- różnica między
query
iquery_vars
właściwościami? Wydaje się, że są one używane prawie tak samo w kodzie, ale zwykle mają różne wartości, a metody sprzyjająquery_vars
jednej.
- różnica między
WP
iWP_Query
a jednocześnie istnieje wiele rzeczy dzieje się tam, myślę, żeadd_rewrite_tag()
wydaje się najbardziej zwięzły sposób, aby WP świadomi niestandardowego zapytania var i grać dobrze z nim.Przykład: ładując stronę o nazwie /? Pagename = about, WP przetworzy ciąg zapytania i stwierdzi, że używany parametr query_var to page_id.
Inny przykład: /? Cat = 1, /? Nazwa_kategorii = bez kategorii i / kategoria / bez kategorii mają takie same zapytanie
źródło
Zakładałbym, że zrobiono to za pośrednictwem
$_GET
i / lub$_POST
, i odpowiednio manipulowałem.Alternatywnie przechowuj ogromną wiązkę danych w bazie danych, a następnie parsuj identyfikator do adresu URL w ten sposób
Zapytanie oczywiście nie będzie takie proste, może obejmować wiele złączeń i tabel złączeń. To właśnie robię na jednej ze stron, analizuję unikalny identyfikator, a następnie buduję dane za pomocą MySQL.
źródło