Salut, și bine ați venit în a doua parte a seriei numită "Mastering WP_Query". În prima parte, am început cu seria prin introducerea pur și simplu a ceea ce WP_Query
clasa este. Și în această a doua parte, vom învăța despre funcțiile asociate WP_Query
.
Sa incepem!
Nu sunt un expert în programare, dar pot vedea că WP_Query
clasa este unul dintre cele mai bune exemple ale modelului MVC. Este extrem de puternic, complet extensibil și foarte ușor de utilizat odată ce cunoașteți elementele de bază.
Pe lângă proprietățile, metodele și parametrii (pe care vom trece în viitor), WordPress oferă funcții suplimentare și cârlige (adică acțiuni și filtre) pentru a lucra cu WP_Query
clasă. În acest tutorial, vom ajunge să cunoaștem funcțiile, iar în partea următoare vom vedea acțiuni și filtre legate de WP_Query
. Dacă vedeți că am uitat ceva, nu ezitați să vă anunțați prin înscrierea unui comentariu.
Există 13 funcții WordPress care funcționează cu WP_Query
clasa care vă poate ajuta să valorificați puterea WP_Query
. Ei nu au nevoie de nici o introducere, deci aici mergem:
get_query_var ()
Numele primelor noastre funcții vorbește de la sine, într-adevăr: este nevoie de globalizare $ wp_query
obiect și preia o variabilă de interogare publică din ea. Are doi parametri: Prima este variabila pentru a returna valoarea sa, iar cea de-a doua este o valoare implicita pentru returnare daca variabila nu este setata:
query_posts ()
Pentru a fi sincer, acest lucru este a rău funcţie. Chiar nu trebuie să-l folosiți deloc, dar pentru a spune "calea cea bună", vom trece peste ea și vă vom spune că este "calea greșită".
query_posts ()
este o funcție care modifică interogarea principală, punând întreaga interogare principală și execută o nouă interogare - și va trebui să o utilizați wp_reset_query ()
să curețe după ea.
Această funcție este una dintre cele mai multe uzurpată funcții în centrul WordPress. Nu ar trebui să-l utilizați pentru a crea interogări secundare - puteți utiliza WP_Query
clasa sau get_posts ()
(despre care vom vorbi mai târziu în acest tutorial). Nu ar trebui să-l utilizați pentru a modifica interogarea principală fie - ar trebui să utilizați pre_get_posts
acțiune (despre care vom vorbi mai târziu). Chiar și Codul ne descurajează să îl folosim și să arătăm alternative.
Linia de fund: Nu o utilizați.
get_post ()
O altă funcție explicită este get_post ()
, pe care îl utilizați pentru a obține un singur post. Are trei parametri opționali:
OBIECT
, ARRAY_A
(o matrice asociativă) sau ARRAY_N
(o matrice numerică).'brut'
astfel încât acesta nu va fi filtrat decât dacă îl setați 'Editați | ×'
, 'afişa'
, 'atribut'
sau 'Js'
.get_posts ()
get_posts ()
funcția ne permite să rulați interogări și să le salvați ca arrays pentru a le folosi în diverse locuri. Este nevoie de aceleași argumente cu WP_Query
astfel încât să puteți personaliza interogarea așa cum doriți. (Vom revizui WP_Query
în viitor, deci stați la dispoziție!) Este cel mai bun și mai eficient mod de a crea liste postale - dar nu și bucle.
'știri', 'comanda' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Returnați o serie de postări din categoria "știri". $ all_posts_list = get_posts ($ args); ?>
Deși această funcție poate fi utilizată pentru a rula "interogări secundare" fără probleme, Codul recomandă utilizarea WP_Query
când se creează mai multe bucle și se utilizează get_posts ()
la preluarea unei liste postale. Peter R. Knight explică diferența dintre get_posts ()
și WP_Query
în termeni simpli: Principala diferență este aceea WP_Query
face mai multe interogări de bază de date (date postale, meta date, date de autor și date de comentarii) în timp ce get_posts ()
face o singură interogare (postare date).
get_pages ()
Acest ciudat funcția are scopul de a prelua o listă de pagini, deși are a post_type
care vă permite să selectați alt tip de post (cu condiția ca tipul postării să fie ierarhic, altfel se întoarce fals
).
"," Metadata "=>", "meta_value" => "," autori '=>', 'parental' => 0, 'parent' => -1, 'exclude_tree' => ',' number '=>', 'offset' => 0, 'post_type' => 'post_status' => 'publicați'); $ pages = get_pages ($ args);?>
Acceptă argumente care sunt foarte asemănătoare WP_Query
argumente, dar ele sunt ușor diferite:
ordinea de sortare
: Dacă să sortați paginile într-o pagină ascendentă (asc
) sau descendent (desc
) Ordin.sort_column
: Cum să sortați paginile. acceptă POST_TITLE
, menu_order
, POST_DATE
, post_modified
, ID-ul
, post_author
, și POST_NAME
.ierarhic
: Dacă să afișați pagini ierarhic (1
) sau nu (0
).exclude
: O listă separată prin virgulă sau o listă de coduri de identificare pentru a exclude din listă.include
: O listă separată prin virgulă sau o serie de ID-uri de pagină care să fie incluse din listă și să excludă orice altceva.meta_key
: Când este utilizat cu meta_value
, include doar pagini care au tasta meta definită și valoarea.meta_value
: Când este utilizat cu meta_key
, include doar pagini care au tasta meta definită și valoarea.autori
: O listă de ID-uri autorizate separată prin virgulă.child_of
: Un cod al unei pagini care să aducă numai copiii și nepoții în listare.mamă
: Listați paginile care au ID-ul paginii furnizat ca părinte. Pentru ca acest argument să funcționeze, ierarhic
argumentul trebuie să fie setat la 0
.exclude_tree
: O listă separată prin virgulă sau o serie de coduri de pagină care să fie excluse împreună cu copiii acesteia.număr
: Numărul de pagini de preluat.ofset
: Numărul de pagini pentru a sări de sus.post_type
: Tipul mesajului pentru interogare. Bineînțeles, este implicit pagină
.post_status
: O listă separată de virgule de tipuri de posturi de postare pe care să le includem.have_posts ()
Fără a accepta parametri, această funcție se întoarce pur și simplu ADEVĂRAT
dacă interogarea returnează orice înregistrare și FALS
dacă nu.
bara()
Codul spune că "iterează indexul post în buclă". Ea face mai multe lucruri:
$ postare
date.în bucla
parametru pentru ADEVĂRAT
.$ postare
: setup_postdata ()
Această funcție, de asemenea, vorbește de la sine: stabilește datele postale globale. Să vedem ce spune Codul despre acest lucru:
setup_postdata () umple variabilele globale
$ id, $ authordata, $ curentă, $ curent luna, $ pagină, $ pagini, $ multipage, $ more, $ numpages
, care ajută multe etichete de șabloane să funcționeze în contextul post actual. Nu atribuie globale$ postare
variabilă, dar se pare că se așteaptă ca argumentul său să fie o referință la acesta.
rewind_posts ()
Cu toate acestea, o alta functie al carui nume isi expune functiile: Aceasta functie pur si simplu "intorce" Buclele, astfel incat sa le puteti rula din nou mai tarziu.
$ postare
: wp_reset_postdata ()
Această funcție resetează globale $ postare
variază înapoi la primul post din interogarea principală. Este mai bine să o utilizați după o interogare secundară.
wp_reset_query ()
Aceasta ar trebui utilizată dacă se modifică interogarea principală (cu query_posts ()
sau funcția pre_get_posts
acțiune pe care o vom vedea în următoarea parte), astfel încât interogarea principală să poată fi resetată.
is_main_query ()
Aceasta este o etichetă condiționată care se întoarce ADEVĂRAT
dacă interogarea curentă este interogarea principală și FALS
dacă nu este. Simplu, corect?
în bucla()
Un alt etichetă condiționată este în bucla()
care se întoarce pur și simplu ADEVĂRAT
sau FALS
dacă codul dvs. rulează în buclă sau nu.
Acolo mergeți - acum știți (probabil) toate funcțiile legate de WP_Query
! Rămâi acordat pentru următoarea parte în care vom afla WP_Query
acțiuni și filtre înrudite.
Aveți comentarii sau ceva de adăugat la această parte? Simțiți-vă liber să vă împărtășiți gândurile comentând mai jos. Și dacă ți-a plăcut articolul, nu uita să îl împarți cu prietenii tăi!