Kohandatud silmus / päring, mis põhineb kohandatud väljadel CSS-trikid

Anonim
Viimati värskendas Jason Witt.

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_Queryklassist query_posts()või get_posts(). Kuna query_posts()ja get_posts()on WP_Queryklassi ü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 $argson 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_keyArgument 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_keyID 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_valueArgument päringuid post, millel on väärtus, mida määratleda. meta_valueArgument 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_valueargument on stringiväärtuste jaoks, meta_value_numon 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_compareArgument 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_querymida kasutatakse päringu määratlemiseks.

võti, väärtus ja võrdlus

Argumendid key, valuetöö täpselt samamoodi nagu meta-key, meta-valuenagu eespool kirjeldatud. Kompleks comparesarnaneb compareülaltoodud lihtsaga, kuid selleks on vaja erinevat võrdlusnimekirja. Kompleks comparekasutab '=', '! =', '>', '> =', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'VAHEL "," EI VAHE "," OLEMAS "või" EI OLE ". valuevõ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 valueargumenti 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 relationkasutatakse juhul, kui soovite kohandatud metaandmetest päringuid teha loogilise seose abil. Võite kasutada ANDvõi OR. Näiteks saate ANDvõrrelda, kas data1 ja data2 vastavad kriteeriumidele, ja siis, ORkui 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 relationvää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

typeArgument 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_queryargumenti, kuna soovime typeargumendi 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 valueon 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_QueryKlass 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_Querykoodeksilehte.