Până acum, în această serie ați învățat cum să accesați meta date WordPress și să lucrați cu matricele în care sunt returnate. Nu adăugăm doar câmpuri personalizate în mesajele WordPress, pentru a putea afișa aceste informații, dar și pentru a le putea sorta după ele.
Acum că știți cum să preluați și să afișați meta date, este timpul să învățați cum să personalizați bucla WordPress pentru a returna numai postările cu valori meta specifice.
În scopul de a personaliza ce posturi WordPress revine pe baza câmpurilor meta, trebuie să le folosim WP_Query
și specificați a meta_query
. Dacă, de exemplu, aveam un tip de post personalizat numit "filme" care avea un câmp personalizat numit "director", am putut căuta filme ale căror director a fost director al uneia dintre cele trei Razboiul Stelelor filme.
Uitați-vă la codul de mai jos și vedeți dacă puteți utiliza stăpânirea măștilor pe care le-ați câștigat în ultima parte pentru a înțelege ce se întâmplă cu meta_query
, care voi descompune ceea ce se întâmplă sub cod.
$ sw_args = array ('post_type' => 'filme', 'meta_query' => array (' Irvin Kershner '),' compare '=>' IN ',))); $ query = noua valoare WP_Query ($ sw_args); dacă ($ the_query-> have_posts ()) echo 'Filme Prin directorii Star Wards
„; echo "
După cum puteți vedea, avem o serie de nume ale regizorului încadrate în interiorul altor trei tablouri. Să o despărțim, bucată cu bucăți.
În primul rând, vom începe o matrice pentru noi WP_Query
args. După prima noastră argumentare "post_type", vom începe o matrice pentru a ne găzdui meta_query
argumente.
În interiorul căruia specificăm ce cheie să căutăm - în cazul "director". De asemenea, oferim o serie de valori pentru a căuta în acea cheie.
Ultimul argument este de a compara aceste valori, în acest caz specificăm "IN" pentru a prelua orice post cu aceste valori în directorul cheie.
Ce-ar fi dacă am vrea filme unde regizat de un regizor al unui film Star Wars, dar nu ar exclude Star Wars Prequels? Putem doar să adăugăm o altă serie de argumente noastre meta_query
, dar de această dată pentru valoare utilizați o serie de titluri de filme pentru cheie film_title
și pentru a compara, utilizați "NU SE LIKE" pentru a exclude postarea care are aceste valori în film_title
camp.
$ sw_args = array ('post_type' => 'filme', 'meta_query' => array (' Irvine Kershner '),' compare '=>' IN '), array (' key '=>' film_title ',' value '=>' Phantom Menace ', Attack of the Clones, ), 'compare' => 'NOT LIKE'),)); $ query = noua valoare WP_Query ($ sw_args);
Acum WordPress va căuta filme de către acești trei regizori, al căror titlu nu este unul dintre cele trei prequels.
Până acum v-am arătat cum să utilizați WP_Query
pentru a găsi postări care au valori specifice pentru un câmp particularizat, dar nu cum să afișați acele câmpuri.
Afișarea acestor câmpuri este aproape la fel ca înainte, dar în loc să le folosiți get_the_ID ()
pentru a specifica ID-ul pentru get_post_meta ()
îl specificăm într-un context de obiect. Deci, în bucla noastră, pe care o puteți vedea mai jos, ID-ul este preluat cu puțin diferit $ Query-> post-> ID
.
$ sw_args = array ('post_type' => 'filme', 'meta_query' => array (' Irvine Kershner '),' compare '=>' IN '), array (' key '=>' film_title ',' value '=>' Phantom Menace ', Attack of the Clones, ), 'compare' => 'NOT LIKE'),)); $ query = noua valoare WP_Query ($ sw_args); dacă ($ the_query-> have_posts ()) echo 'Filme Prin directorii Star Wards
„; echo "
La fel ca în ultima parte când am folosit WP_Query
pentru a găsi postări cu anumite valori pentru diferite câmpuri personalizate, putem folosi WP_Query
echivalentul tabelului utilizatorului WP_User_Query
.
De exemplu, dacă avem un câmp personalizat numit subscriber_level
și a vrut să găsească numai acei utilizatori care au nivelul abonatului extra_special
sau super_special
am putut, în același fel, căutăm filme regizate de cei trei regizori ai filmelor Star Wars:
$ args = array ('meta_query' => array) (array ('key' => 'subscriber_level', 'value' => array (extra_special, super_special) ; $ user_query = noul WP_User_Query ($ args); dacă (! gol ($ user_query-> rezultate)) echo 'Utilizatorii Extra și Super Speciali
„; echo "
Ca și cu WP_Query
, putem combina diferite comparații pentru a controla în continuare ce utilizatori revină interogarea noastră. Acest următor exemplu combină ultima interogare cu o interogare, de data aceasta a wp_users
tabelul în sine pentru orice utilizator al cărui nume sunt Luke, Han sau Leia.
$ args = array ('meta_query' => array (array ('cheie' => 'subscriber_level', 'value' => array ('extra_special', 'super_special' 'search' => array ('Luke', 'Han', 'Leia'), 'search_columns' => array ('user_nicename', 'display_name');); $ user_query = noul WP_User_Query ($ args); dacă (! gol ($ user_query-> rezultate)) echo 'Utilizatorii Extra și Super Speciali au numit Luke, Han sau Leia
„; echo "
În această serie ați fost introdus meta date WordPress și ați învățat câteva lecții despre conceptele PHP de bază de-a lungul drumului.
Ați învățat cum să obțineți valorile din câmpurile care stochează meta date post și utilizator și cum să construiți interogări pentru postări și utilizatori pe baza valorilor meta. Cu aceste cunoștințe puteți fi pregătit să lucrați cu câțiva câmpuri personalizate și pe cale de a utiliza WordPress ca un sistem complex de gestionare a conținutului.