Meta_Query WordPress: tot ce trebuie să știți

Publicat: 2022-04-30

Unul dintre cele mai puternice instrumente din WordPress este capacitatea de a adăuga câmpuri personalizate la postări. Mulți dezvoltatori folosesc câmpuri personalizate avansate sau meta câmpuri personalizate pentru postări.

În această postare, vom discuta despre cum să interogăm postările după un câmp personalizat folosind funcția meta_query din WordPress. Acest lucru este util pentru site-urile cu multe funcționalități personalizate.


Interogați postările după o metavaloare

Probabil cea mai populară modalitate de a interoga postările cu un câmp personalizat este vizarea unei anumite meta-valoare. De exemplu, să presupunem că avem un site în care postările au un câmp personalizat folosit pentru a determina dacă o postare este „focalizată”. Acest lucru este obișnuit atunci când creați o secțiune recomandată pe un site WordPress.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

Desigur, codul de mai sus va varia în funcție de titlul câmpurilor și meta-cheilor, dar „cheia” este numele câmpului personalizat, în timp ce „valoarea” este ceea ce interogăm postările. Câmpul „comparare” este folosit pentru o serie de operațiuni de comparare pe care le vom analiza mai târziu în postare.

Folosirea acestui lucru în WP_Query ne va permite să obținem o matrice care este excelentă pentru funcțiile de buclă pentru a afișa postări. În această postare, vom analiza doar funcțiile meta_query, mai degrabă decât modul de afișare a ieșirii WP_Query.


Interogați postările după mai multe metavalori

Dacă doriți să verificați o valoare meta-cheie cu mai multe valori, cel mai bine este să utilizați operatorul „IN”.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

Interogați postările prin mai multe meta-chei

Acum că am interogat postările cu o singură meta-cheie, să facem una cu mai multe câmpuri/chei interogate. Acest lucru vă va permite să interogați postările pe baza mai multor câmpuri personalizate. Acest exemplu combină ambele lucruri pe care le-am făcut mai sus prin imbricarea interogărilor într-o matrice și adăugând o „relație” la meta_query.

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

Câmpul „relație” poate fi setat la „ȘI” sau „SAU”, astfel încât să puteți solicita îndeplinirea tuturor condițiilor sau doar una.


Operatori de comparare meta interogări

Există câțiva operatori care vă vor fi de ajutor în interogarea postărilor dvs. prin meta-interogare. Iată o defalcare rapidă a fiecărui operator de comparație și a modului în care le puteți utiliza.

  • '=' Interogează meta chei care sunt egale cu o meta valoare
  • '!=' Interogează cheile meta care NU sunt egale cu o valoare meta
  • „>” Interogează meta cheile care sunt mai mari decât valoarea meta
  • „>=” Interogează meta chei care sunt mai mari decât și egale cu metavaloarea
  • „<” Interogează cheile meta care sunt mai mici decât valoarea meta
  • „<=” Interogează meta chei care sunt mai mici decât și egale cu metavaloarea
  • „LIKE” Interogează meta-cheile care conțin un cuvânt/expresie (de exemplu, interogarea „roșu” se potrivește cu expresiile „Roșu”, „pare roșu” și „stil roșu”)
  • „NU PLACE” Opusul celui de mai sus
  • „IN” Interogează meta cheile unde valoarea există într-o matrice
  • „NOT IN” Interogează meta cheile în care valoarea nu există într-o matrice
  • „INTRE” Interogează meta-cheile în care valoarea este între două numere
  • „NOT BETWEEN” Interogează meta cheile în care valoarea nu este între două numere
  • „EXISTĂ” Interogează meta cheile acolo unde valoarea există
  • „NU EXISTĂ” Interogează meta cheile în care valoarea nu există deloc
  • „REGEXP” Interogează meta cheile pe baza unei expresii regulate
  • „NOT REGEXP” Opusul REGEXP de mai sus

Cum să sortați postările după meta câmpuri

Desigur, WordPress vă permite să sortați postările folosind câmpurile personalizate folosind opțiunea „orderby” din WP_Query. Va trebui să setați „orderby” să fie „meta_value” și apoi să setați o valoare „meta_key” la numele câmpului dvs. În mod implicit, acest lucru este cel mai util atunci când doriți ca interogarea dvs. să revină în ordine alfabetică sau sortată după număr, atunci când câmpul dvs. este un număr.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub