Kui kujundate või arendate WordPressi teemasid või pistikprogramme, on hea võimalus, et peate kunagi tegema päringu kohandatud metaväljade jaoks. Need on täiesti kohandatud võtme / väärtuse paarid, mille saate kinnitada igale postitusele, lehele või kohandatud postitustüübile. WordPressil on nende jaoks vaikimisi põhiline kasutajaliides või võite nende väljamõeldiseks kasutada midagi sellist nagu Advanced Custom Fields. Kuid kapoti all kasutab ACF tavalisi kohandatud välju.
Just see koodilõikude leht, mida praegu vaatate, on kirjutatud 1999. aastal. Sel ajal peate konkreetsete kohandatud väljadega postituste pärimiseks kasutama globaalset muutujat $ $ wpdb. Seda saab kasutada MySQL-päringute loomiseks, mida klass WordPress WP_Query () ei toeta. Õnneks on täna WordPressil argumente, mis toetavad kohandatud metaväljade päringuid.
Siinkohal käsitleme erinevaid viise, kuidas saate postitusi taotleda ja üle vaadata konkreetsete kohandatud väljadega (ja nende väärtustega). Seda teavet saate kasutada olenemata WP_Query
klassist query_posts()
või get_posts()
. Kuna query_posts()
ja get_posts()
on WP_Query
klassi ümbrised . Nad kõik nõustuvad samade argumentidega.
Päringu argumendid
Siin on põhinäide WordPressi päringust, mis on võetud WordPressi koodeksist.
have_posts() ) ( echo '
'; while ( $the_query->have_posts() ) ( $the_query->the_post(); echo '
- ' . get_the_title() . '
'; ) echo '
'; ) else ( // no posts found ) /* Restore original Post Data */ wp_reset_postdata();
See $args
on oluline osa seal. Esitame erinevaid argumente, et see toimiks meie soovidena.
Kohandatud meta pärimisel on kaks argumentide rühma, mida saate kasutada. Üks rühm on mõeldud lihtsa kohandatud metavälja päringu jaoks ja teine rühm keerukamate kohandatud metaväljade päringute jaoks. Alustame lihtsast rühmast.
meta_key
meta_key
Argument päringu tahes postituse, mis on kohandatud väli meta ID salvestatakse andmebaasi, kas on või ei ole väärtus salvestatakse valdkonnas. Selle meta_key
ID annate oma metaväljadele. Nagu nii:


Selles näites päritakse kõiki postitusi, millel on kohandatud metaväli ID-ga “field1”.
$args = array( 'meta_key' => 'field1' );
metaväärtus
meta_value
Argument päringuid post, millel on väärtus, mida määratleda. meta_value
Argument kasutatakse string väärtused. Selles näites päritakse postitusi kohandatud metaväljaga, mille väärtus on „data1”.
$args = array( 'meta_value' => 'data1' );
Võite ka need kaks ühendada. Selles näites päritakse ainult postitusi, millel on kohandatud metaväli ID-ga „field1”, mille väärtus on „data1”.
$args = array( 'meta_key' => 'field1', 'meta_value' => 'data1' );
meta_value_num
Argument meta_value_num sarnaneb argumendiga `meta_value`. Kui meta_value
argument on stringiväärtuste jaoks, meta_value_num
on see mõeldud arvväärtuste jaoks.
See näide näitab, kuidas päringut kohandatud metaväljal „field1” pärida, kui selle väärtus on „10”.
$args = array( 'meta_key' => 'field1', 'meta_value_num' => '10', );
meta_võrdle
meta_compare
Argument ei täpselt, mida see kõlab. See võimaldab teil kasutada võrdlejaid argumentidega "meta_value" ja "meta_value_num". Võimalikud võrdlusandmed on '=', '! =', '>', '> =', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN' , 'VAHEL', 'EI VAHE', 'EI OLE OLEMAS', 'REGEXP', 'NOT REGEXP' või 'RLIKE'. Siin on näide, mis näitab, kuidas päringuid teha postituste kohta, millel pole väärtust "data1".
$args = array( 'meta_key' => 'field1', 'meta_value' => 'data1', 'meta_compare' => '!=', );
Keerukamad päringud
meta_query
Peamine argument, mida keeruliste päringute korral kasutate, on meta_query
. See argument omaette ei tee midagi. See ütleb lihtsalt WordPressile, et soovite teha päringu kohandatud metaväljade jaoks. Lisate sellesse täiendavaid argumente, meta_query
mida kasutatakse päringu määratlemiseks.
võti, väärtus ja võrdlus
Argumendid key
, value
töö täpselt samamoodi nagu meta-key
, meta-value
nagu eespool kirjeldatud. Kompleks compare
sarnaneb compare
ülaltoodud lihtsaga, kuid selleks on vaja erinevat võrdlusnimekirja. Kompleks compare
kasutab '=', '! =', '>', '> =', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'VAHEL "," EI VAHE "," OLEMAS "või" EI OLE ". value
võib olla massiiv, kuid ainult siis, kui võrdlemisel kasutatakse 'IN', 'NOT IN', 'BETWEEN' või 'NOT BETWEEN'.
Kui kasutate funktsiooniga „OLEMAS” või „EI OLE” compare
, ei pea te value
argumenti määrama .
Siin on näide, mis pärib postitusi, kui sellel on väärtus “data1” väärtusega “field1” ja väärtusega “data2” väärtus “field2”.
$args = array( 'meta_query' => array( array( 'key' => 'field1', 'value' => 'data1' ), array( 'key' => 'field2', 'value' => 'data2', 'compare' => '!=', ) ) );
suhe
Seda relation
kasutatakse juhul, kui soovite kohandatud metaandmetest päringuid teha loogilise seose abil. Võite kasutada AND
või OR
. Näiteks saate AND
võrrelda, kas data1 ja data2 vastavad kriteeriumidele, ja siis, OR
kui data1 või data2 vastavad kriteeriumidele.
See argument on iseseisev. See tähendab, et seda ei kuvata üksikute kohandatud metavälja parameetrites. Vaatame ühte näidet. Selles näites päritakse ainult postitusi, mille väärtus on „field1” väärtusega „data1” ja „field2” väärtusega „data2”.
$args = array( 'meta_query' => array( 'relation' => 'AND' array( 'key' => 'field1', 'value' => 'data1', ), array( 'key' => 'field2', 'value' => 'data2', ), ) );
Kui muutsite relation
väärtuseks „OR”. Siis küsitletakse mis tahes postitusi, kui välja „1 ”väärtus on„ data1 ”või kui„ välja2 ”väärtus on„ data2 ”.
tüüp
type
Argument võimaldab teil valida, millist tüüpi andmeid päring. Võite kasutada numbreid „NUMERIC”, „BINARY”, „CHAR”, „DATE”, „DATETIME”, “DECIMAL”, “SIGNED”, “TIME” või “UNSIGNED”.
Tüüpi “DATE” saab kasutada koos compare
“BETWEEN” -ga ainult siis, kui kuupäeva vorming on “YYYYMMDD”.
Selles näites päritakse ükskõik millist postitust, mille „välja1” väärtus on arvuline.
$args = array( 'meta_query' => array( array( 'key' => 'field1', 'value' => 'data1', 'type' => 'NUMERIC' ) ) );
Näide reaalsest maailmast
Siiani olen toonud vaid meelevaldsete andmete ja väljadega näiteid. Nüüd tahaksin teile näidata reaalses maailmas näidet kohandatud metaväljade päringute kohta.
Stsenaarium
Olete loonud sündmuste kohandatud postitüübi. Sündmuste postituse tüübil on kuupäeva kohandatud väli ID-ga event_date
. Soovite luua päringu, mis näitab sündmusi, mis algavad praegusel kuupäeval järgmise 30 päeva jooksul.
Kasutame meta_query
argumenti, kuna soovime type
argumendi abil välja „event_date” määratleda andmetüübina „DATE”.
See on päring:
$args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'event_date', 'value' => array( date( 'Ymd', strtotime( '-1 day' ) ), date( 'Ymd', strtotime( '+31 days' ) ) ), 'compare' => 'BETWEEN', 'type' => 'DATE' ) ) ); $event_query = new WP_Query( $args );
See value
on praeguse kuupäeva massiiv - 1 päev ja 31 päeva alates praegusest kuupäevast. Kuna kasutame võrdlusvahendit “BETWEEN”, küsitakse ainult väärtusmassiivi vahelisi postitusi, seega soovime need ühe päeva võrra tasaarvestada.
Selle päringuga kuvatakse kõik järgmise 30 päeva jooksul toimuvad sündmused.
Järeldus
WP_Query
Klass on väga paindlik klassi, mis võimaldab teil luua palju custom päringuid. Kui soovite lisateavet erinevate argumentide kohta, mida saate kasutada päringute jaoks, soovitan vaadata WP_Query
koodeksilehte.