Până acum, în această serie, ați aflat despre o serie de argumente pe care le puteți utiliza cu WP_Query
pentru a selecta postările după tipul, categoria, eticheta, metadatele, data, starea și multe altele.
În acest tutorial final pe WP_Query
argumente, voi rula prin intermediul unor parametri mai puțin frecvent utilizate, care pot oferi întrebări dvs. chiar mai multă flexibilitate.
Parametrii pe care îi vom acoperi aici sunt pentru:
Înainte de a începe, să vedem o recapitulare rapidă a modului în care codificați argumentele dvs. WP_Query
.
Când codificați WP_Query
în temele sau pluginurile dvs., trebuie să includeți patru elemente principale:
În practică, acest lucru va arăta mai degrabă după cum urmează:
have_posts ()) // Începeți cu buclă peste rezultatele interogării. în timp ce ($ query-> have_posts ()) $ query-> the_post (); // Conținutul rezultatelor mesajelor interogate merge aici. // Restaurați datele postale originale. wp_reset_postdata (); ?>
Argumentele sunt ceea ce spune WordPress ce date să aducă din baza de date și sunt cele pe care le voi acoperi aici. Deci, tot ce ne concentrăm aici este prima parte a codului:
$ args = array (// Argumente pentru interogarea dvs.);
După cum puteți vedea, argumentele sunt conținute într-o matrice. Veți învăța cum să le codificați pe măsură ce lucrați prin acest tutorial.
Există o modalitate specifică de a codifica argumentele în matrice, care este după cum urmează:
$ args = array ('parameter1' => 'valoare', 'parameter2' => 'valoare', 'parameter3' => 'valoare');
Trebuie să închideți parametrii și valorile lor în ghilimele simple, utilizați =>
între ele, și le separați cu o virgulă. Dacă obțineți acest lucru greșit, WordPress nu poate adăuga toate argumentele dvs. la interogare sau puteți obține un ecran alb.
Există patru parametri pe care le puteți utiliza pentru interogarea după autor:
autor
(int): utilizați ID autornumele autorului
(şir): folosiți 'user_nicename' (NU nume)author__in
(mulțime): utilizați ID autorauthor__not_in
(mulțime)Primul, autor
, vă permite să interogați mesajele de la unul sau mai mulți autori, furnizând codul autorului:
$ args = array ('autor' => '2');
Codul de mai sus interoghează toate postările autorului al cărui cod este 2
.
De asemenea, puteți utiliza un șir pentru a interoga mesaje de la mai mulți autori:
$ args = array ('autor' => '1, 2');
Dacă doriți să interogați după nume, ați folosi numele autorului
parametru:
$ args = array ('numele autorului' => 'rachelmccollin');
Acest parametru ia valoarea din user_nicename
câmp în baza de date ca argument, care este afișat ca porecla în ecranul Administratori utilizatori:
Rețineți că, deoarece acesta poate fi editabil de utilizatori, veți fi mai sigur să îl utilizați autor
dacă credeți că utilizatorii dvs. ar putea schimba acest lucru.
De asemenea, puteți căuta postări de către o serie de autori:
$ args = array ('author__in' => array ('1', '2'));
Cele de mai sus vor interoga postări de la doi autori: cei cu ID 1
și 2
, oferindu-vă aceleași rezultate ca șirul pe care l-am folosit cu autor
parametru de mai sus.
În cele din urmă, puteți exclude postările de la unul sau mai mulți autori care utilizează author__not_in
parametru. Argumentul de sub interogări pentru toate posturile, cu excepția celor de autor 1
:
$ args = array ('author__not_in' => array ('1'));
Sau puteți exclude mai mulți autori:
$ args = array ('author__not_in' => array ('1', '2'));
Alternativ, puteți utiliza funcția autor
parametru și folosiți un semn minus în fața ID-ului autorului pentru a exclude un autor:
$ args = array ('autor' => '-2');
Există un singur parametru pentru căutare, care este s
. Utilizați-l pentru a căuta postări care corespund unui termen de căutare. De exemplu, pentru a căuta postări conținând cuvintele cheie "mâncarea mea preferată", ați folosi acest lucru:
$ args = array ('s' => 'alimentele mele preferate');
S-ar putea să găsiți acest lucru util pentru a căuta postări similare cu cuvinte cheie similare, de exemplu.
Puteți utiliza cei doi parametri de parolă pentru a interoga postările cu și fără protecție prin parolă:
has_password
(bool)post_password
(şir)Primul parametru, has_password
, vă permite să căutați mesaje cu sau fără protecție prin parolă. Deci, pentru a interoga mesajele protejate prin parolă:
$ args = array ('are_password' => true);
Și pentru postările care nu au parole:
$ args = array ('has_password' => false);
De asemenea, puteți interoga parola însăși, utilizând post_password
parametru:
$ args = matrice ('post_password' => 'mypassword');
Există un singur parametru disponibil pentru permisiuni, permanent
, pe care îl utilizați pentru a interoga postările pe care utilizatorul curent le-a permis să le citească. Este nevoie de „Ușor de citit“
valoare și este conceput pentru a fi combinat cu alte argumente.
Deci, pentru a interoga mesajele protejate prin parolă și pentru a le afișa numai dacă utilizatorul are permisiunile corespunzătoare, ați folosi acest lucru:
$ args = array ('has_password' => true, 'perm' => 'lizibil');
Sau pentru a afișa schițe de postare dacă utilizatorul curent are permisiunea să le vizualizeze, ați folosi acest lucru:
$ args = array ('post_status' => 'draft', 'perm' => 'lizibil');
Există trei parametri de cache care împiedică adăugarea datelor din memorie la cache:
cache_results
(boolean): memoria cache de informațiiupdate_post_meta_cache
(boolean): cache-ul de informații post-metaupdate_post_term_cache
(boolean): cache de informații post-termValoarea implicită a tuturor celor trei este Adevărat
: nu trebuie să le utilizați dacă doriți ca datele să fie adăugate în cache.
Deci, pentru a afișa toate mesajele din produs
post, dar nu adăugați informații post în memoria cache, ați folosi acest lucru:
$ args = array ('post_type' => 'produs', 'cache_results' => false);
În mod normal, nu trebuie să utilizați acești parametri, deoarece este o practică bună să adăugați date postate în memoria cache. Cu toate acestea, este posibil ca uneori să doriți să preluați mesaje, astfel încât să puteți utiliza doar unele dintre datele postate, caz în care nu aveți nevoie de restul datelor postare din memoria cache. Un exemplu ar putea fi atunci când doriți doar să afișați o listă a titlurilor post cu linkuri, caz în care nu aveți nevoie de datele post-termen sau de metadatele care urmează să fie adăugate în memoria cache:
$ args = array ('post_type' => 'produs', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);
Puteți utiliza funcția câmpuri
pentru a specifica câmpurile care trebuie returnate din interogare. Acest lucru poate salva datele returnate din câmpurile din baza de date pe care nu le aveți nevoie la trimiterea datelor în buclă.
Implicit este returnarea tuturor câmpurilor, dar aveți două opțiuni cu câmpuri
parametru pentru a restricționa acest lucru. În primul rând, „id-uri“
argument:
$ args = array ("câmpuri" => "ID-uri");
Aceasta ar întoarce doar o serie de ID-uri de post și niciun alt câmp. Dacă doriți să scoateți ceva în buclă (cum ar fi titlul postului), atunci ar trebui să utilizați funcții cum ar fi get_the_title ($ post-> ID);
pentru a scoate titlul, care ar fi un mod îndelungat de a face lucruri.
Celălalt argument pe care îl puteți utiliza aduce o matrice asociativă de ID-uri postate cu ID-uri de postare copil:
$ args = array ('fields' => 'id => părinte');
Ați folosi acest lucru pentru a căuta posturi în funcție de celelalte argumente, plus copiii lor.
Această parte a seriei de pe WP_Query
introduce setul final de parametri pentru WP_Query
clasă. Puteți să le utilizați pentru a interoga postările după autor, starea protejată prin parolă sau parola și termenii de căutare și pentru a stabili dacă rezultatele interogării sunt adăugate în memoria cache și care sunt returnate de interogare.
În următoarea parte a acestei serii, veți vedea câteva exemple de utilizare WP_Query
în teme sau pluginuri.