Mastering WP_Query acțiuni și filtre

Bine ați venit în a treia parte a seriei noastre "Mastering WP_Query". În partea anterioară, am trecut prin 13 funcții WordPress care sunt legate de WP_Query clasă. În această parte vom examina cârligele WordPress (filtre și acțiuni) pe care le puteți utiliza împreună cu WP_Query.

Deci, fără să mai vorbim, să începem!

Filtrele WP_Query

În "Referința filtrelor" din Codex există 16 filtre WordPress listate sub titlul "Filtre WP_Query". În această secțiune, vom vorbi despre ei. Va fi o secțiune destul de rapidă, deoarece majoritatea filtrelor se referă la diferite "clauze" ale unei interogări de bază de date realizată de WP_Query clasă.

Vom reveni la ele imediat după ce trecem prin filtrele care nu au legătură cu clauzele.

Filtrarea numărului de mesaje găsite pentru interogare: found_posts

Acest filtru vă permite să modificați numărul de articole găsite fără limita care provine WP_Query„s posts_per_page argument.

Acest filtru este util în special pentru crearea paginii personalizate. Să vedem ce spune Codul:

De exemplu, dacă declarați o valoare de offset personalizată în interogările dvs., WordPress NU va deduce offsetul de la parametrul $ wp_query-> found_posts (de exemplu, dacă aveți 45 de posturi utilizabile după o compensare de 10, WordPress va ignora offset și încă dau found_posts o valoare de 55).

Are sens.

Filtrarea interogării de rulare pentru recuperarea postărilor găsite: found_posts_query

Numărul de elemente găsite este calculat cu SELECT FOUND_ROWS () comandă în MySQL. Acest filtru vă permite să modificați această comandă la altceva, în cazul în care trebuie să calculați numărul de elemente găsite într-un mod diferit.

Filtrarea intregului interogare SQL: posts_request

Dacă doriți să modificați interogarea completă SQL, acesta este filtrul pe care trebuie să-l utilizați. În mod esențial, el suprascrie întreaga interogare SQL compusă de WP_Query clasă.

Filtrarea matricei returnarea interogărilor: posts_results

Dacă doriți să modificați PHP mulțime acea WP_Query generează cu interogarea SQL, puteți utiliza acest filtru. Există un exemplu clar despre Codul, astfel încât să puteți vedea cum funcționează.

(Rețineți că acest filtru gestionează brut array generat de interogarea SQL.)

Filtrați matricea postărilor preluate: the_posts

Spre deosebire de posts_results, the_posts filtrul așteaptă ca matricea să fie procesată intern, ceea ce înseamnă că matricea ar fi verificată împotriva posturilor nepublicate și lipicioase. Utilizați această opțiune dacă nu doriți ca anunțurile dvs. nepublicate sau postările să nu fie publicate.

Filtrarea listei de câmpuri (și SELECTAȚI Clauza) a Interogării: posts_fields

SELECTAȚI clauza unei interogări SQL determină câmpurile bazei de date care vor fi selectate din rândurile bazei de date rezultate și acest filtru vă ajută să-l filtrați.

Filtrarea LIMITĂ Clauza interogării: post_limits

LIMITĂ clauza unei interogări SQL stabilește limitările interogării și acest filtru vă ajută să-l filtrați.

Filtrarea DISTINCT Clauza interogării: posts_distinct

DISTINCT o clauză a unei interogări SQL afirmă că interogarea ar trebui să returneze numai rezultate diferite, iar acest filtru vă ajută să-l filtrați. Natural, WP_Query nu returnează rezultate distincte, dar când utilizați acest filtru cu o funcție care revine "DISTINCT", interogarea va fi ajustată pentru a returna numai rezultate diferite.

Filtrarea UNDE Clauza interogării: posts_where

UNDE o clauză a unei interogări SQL este folosită pentru a filtra MySQL-urile SELECTAȚI, INTRODUCE, ACTUALIZAȚI sau ȘTERGE , iar acest filtru vă ajută să filtrați acest filtru. In timp ce WP_Query clasa face tot munca necesară pentru filtrarea rezultatelor, puteți să faceți un pas mai departe utilizând acest filtru.

Filtrarea UNDE Clauza interogării după ce a fost calculată pagina: posts_where_paged

Acest filtru este o iterație la posts_where filtru, pe care îl puteți utiliza cu interogări de paginare.

Filtrarea UNDE Clauza unei interogări de căutare: posts_search

O altă iterație la posts_where filtru este acest filtru, pe care îl puteți modifica UNDE clauza unei interogări care este utilizată pentru a obține rezultate de căutare în WordPress.

Filtrarea A ADERA Clauza interogării: posts_join

A ADERA clauza unei interogări SQL vă permite să lucrați comanda SQL în mai multe tabele de baze de date, iar acest filtru vă ajută să-l filtrați. Aceasta este una dintre părțile avansate ale MySQL, așa că nu recomand să folosiți acest filtru decât dacă știți foarte bine cum MySQL A ADERAe de lucru.

Filtrarea A ADERA Clauza interogării după ce a fost calculată pagina: posts_join_paged

Doar noi posts_where_paged este o iterație de posts_where, aceasta este o repetare la posts_join filtru care funcționează la interogările de paginare.

Filtrarea COMANDA DE LA Clauza interogării: posts_orderby

COMANDA DE LA clauza unei interogări SQL ordonează interogarea și acest filtru vă ajută să filtrați comanda.

Filtrarea A SE GRUPA CU Clauza interogării: posts_groupby

A SE GRUPA CU clauza unei interogări SQL face ca interogarea să revină la rezultatele "grupate" printr-un câmp de bază de date și acest filtru vă ajută să filtrați cum să grupați rezultatele.

Filtrarea tuturor clauzelor interogării: posts_clauses

Dacă doriți să rezolvați toate clauzele în același timp, există și un filtru: posts_clauses. Acest filtru acoperă UNDE, A SE GRUPA CU, A ADERA, COMANDA DE LA, DISTINCT, SELECTAȚI, și LIMITE clauze.

Acțiuni legate de WP_Query

Acum am analizat filtrele legate de WP_Query, să trecem la celălalt tip de cârlige: acțiuni.

Interfera cu interogarea înainte de a se executa: pre_get_posts

Înainte de interogarea parcelei, puteți interacționa cu ea (de exemplu, introduceți variabile suplimentare de interogare) utilizând această acțiune. Să vedem un exemplu rapid de la Tom McFarlin pentru a afla cum să excludem o categorie din bucla principală:

set ('category__not_in', $ exclus); * / set_query_var ('category__not_in', $ excluded);  add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>

Gestionați parsarea interogării: parse_query

Spre deosebire de pre_get_posts, care intervine cu interogarea inainte de variabilele de interogare sunt setate, parse_query acționează procesul după sunt setate variabilele de interogare. Astfel, ar trebui să utilizați această acțiune dacă doriți să verificați variabilele curente și să acționați în conformitate cu acestea.

Modificați obiectul Post: bara

Termenul actiunea este un pic confuz, deoarece este numele unui cârlig de acțiune, a WP_Query-precum și o metodă a funcției WP_Query clasă.

Această acțiune, după cum spune Codexul, ne permite să modificăm obiectul post imediat după ce am fost interogat și stabilit. Folosind această acțiune, puteți modifica ieșirea direct. Să vedem un exemplu rapid:

". __ ("FEATURED", "tutsplus"). '
„; add_action ('the_post', 'tutsplus_featured_badge'); ?>

Sfârșitul părții a treia

Acțiunile și filtrele sunt întotdeauna un subiect distractiv pentru a vorbi și a scrie despre. (Știu pentru faptul că cele două serii despre acțiunile WordPress și filtrele WordPress au fost distractive pentru a scrie și am primit o mare reacție din partea cititorului nostru.) Sper că v-ați bucurat de această parte la fel de mult cum mi-a plăcut scrisul.

Doriți să adăugați ceva la articol? Trage un comentariu în secțiunea de comentarii de mai jos. Și dacă ți-a plăcut articolul, nu uita să îl împarți cu prietenii tăi!

Ne vedem în partea următoare, unde vom vorbi despre proprietățile și metodele lui WP_Query clasă!

Cod