Mastering WP_Query Funcții similare

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!

Utilizarea puterii WP_Query cu funcții, acțiuni și filtre

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.

Funcții legate de WP_Query

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:

Obținerea variabilelor de interogare publică: 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:

Afectează buza principală: 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.

Obținerea unui mesaj unic: 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:

  • Prima este ID-ul postului (sau ID-ul postării curente implicit).
  • Al doilea este tipul de rezultat pe care îl veți obține: fie OBIECT, ARRAY_A (o matrice asociativă) sau ARRAY_N (o matrice numerică).
  • Al treilea este alegerea de a filtra rezultatul. Valoarea implicită este 'brut' astfel încât acesta nu va fi filtrat decât dacă îl setați 'Editați | ×', 'afişa', 'atribut' sau 'Js'.

Salvarea interogărilor în matrice: 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).

Obținerea paginilor: 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_Queryargumente, 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.

Verificarea dacă mesajul returnează interogările: 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.

Lucrul în buclă: bara()

Codul spune că "iterează indexul post în buclă". Ea face mai multe lucruri:

  1. Înregistrează următoarea înregistrare din interogare.
  2. Înființează $ postare date.
  3. Setează în bucla parametru pentru ADEVĂRAT.

Configurare $ 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.

Ștergerea buclei de curent: 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.

Resetarea $ postarewp_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ă.

Resetarea interogării: 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ă.

Verificarea dacă întrebarea curentă este întrebarea principală: 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?

Verificați dacă suntem în buclă: î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.

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

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!

Cod