Mastering WordPress Meta Data Interogarea mesajelor și utilizatorilor prin meta date

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.

Folosind WP_Query la Query by Meta Field Value

Î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 "
    „; în timp ce ($ the_query-> have_posts ()) $ the_query-> the_post (); echo "
  • ". get_the_title (). '
  • „; echo '
„; / * Restaurarea datelor originale postale * / wp_reset_postdata ();

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.

Alte comparații

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.

Afișarea câmpurilor Meta în WP_Query

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 "
    „; în timp ce ($ the_query-> have_posts ()) $ the_query-> the_post (); echo "
    • „; echo "
    • ". get_the_title (). '
    • „; echo "
    • ". get_post_meta ($ query-> post-> ID, 'director', true). '
    • „; echo "
  • " echo '
„; / * Restaurarea datelor originale postale * / wp_reset_postdata ();

Folosind WP_User_Query

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_Queryechivalentul 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 "
    „; foreach ($ user_query-> rezultate ca $ user) echo '
  • ". $ user-> display_name. '
  • „; 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 "
    „; foreach ($ user_query-> rezultate ca $ user) echo '
  • ". $ user-> display_name. '
  • „; echo '
„;

Înfășurarea în sus

Î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.

Cod