Ако дизајнирате или развијате ВордПресс теме или додатке, постоји велика шанса да ћете једног дана морати да упутите упит за прилагођена мета поља. То су они потпуно прилагођени парови кључ / вредност које можете приложити било којем посту, страници или прилагођеном типу поста. ВордПресс за њих подразумевано има основни кориснички интерфејс или можете да користите нешто попут напредних прилагођених поља да бисте их обожавали. Али испод хаубе АЦФ користи редовна стара прилагођена поља.
Ова врло исечена страница коју тренутно гледате написана је 1999. Тада, да бисте могли да тражите постове са одређеним прилагођеним пољима, морали бисте да користите глобалну променљиву `$ впдб`. То се може користити за креирање МиСКЛ упита које класа ВордПресс ВП_Куери () не подржава. Срећом данас, ВордПресс има аргументе који подржавају упите за прилагођена мета поља.
Овде ћемо покрити различите начине на које можете захтевати и пребацивати постове са одређеним прилагођеним пољима (и њиховим вредностима). Ове податке ћете моћи да користите било да користите WP_Query
класу query_posts()
, или get_posts()
. Пошто су query_posts()
и get_posts()
омоти за WP_Query
час. Сви они прихватају исте аргументе.
Аргументи упита
Ево основног примера ВордПресс упита преузетог из ВордПресс Цодек-а.
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();
$args
Је важан део. Послаћемо различите аргументе да би ово функционисало како желимо.
Приликом упита за прилагођену мета постоје две „групе“ аргумената које можете користити. Једна група је за једноставни упит прилагођеног мета поља, а друга група за сложеније упите прилагођених мета поља. Почнимо са једноставном групом.
мета_кеи
meta_key
Аргумент ће упит сваку поруку која има обичај на терену мета ИД сачувани у бази података, без обзира да ли постоји вредност сачуван за област. То meta_key
је ИД који дајете својим мета пољима. Овако:


Овај пример ће поставити упит било којој пошти која има прилагођено мета поље са ИД-ом „поље1“.
$args = array( 'meta_key' => 'field1' );
мета_валуе
meta_value
Аргумент упита пост који има вредност коју дефинишете. meta_value
Аргумент користи за вредности стринг. Овај пример ће упитати све постове са прилагођеним мета пољем које има вредност „дата1“.
$args = array( 'meta_value' => 'data1' );
Такође можете комбиновати то двоје. Овај пример ће тражити само постове који имају прилагођено мета поље са ИД-ом „поље1“ које има вредност „подаци1“.
$args = array( 'meta_key' => 'field1', 'meta_value' => 'data1' );
мета_валуе_нум
Аргумент мета_валуе_нум је сличан аргументу `мета_валуе`. Тамо где је meta_value
аргумент мент за стринг вредности, он meta_value_num
је намењен нумеричким вредностима.
Овај пример показује како да извршите упит за прилагођено мета поље „фиелд1“ ако има вредност „10“.
$args = array( 'meta_key' => 'field1', 'meta_value_num' => '10', );
мета_цомпаре
meta_compare
Аргумент ради управо оно што звучи. Омогућиће вам употребу упоређивача са аргументима `мета_валуе` и` мета_валуе_нум`. Компаратори које можете користити су '=', '! =', '>', '> =', '<', '<=', 'ЛИКЕ', 'НОТ ЛИКЕ', 'ИН', 'НОТ ИН' , „ИЗМЕЂУ“, „НЕ ИЗМЕЂУ“, „НЕ ПОСТОЈИ“, „РЕГЕКСП“, „НИЈЕ РЕГЕКСП“ или „РЛИКЕ“. Ево примера који показује како да упитате било који пост који нема вредност „дата1“.
$args = array( 'meta_key' => 'field1', 'meta_value' => 'data1', 'meta_compare' => '!=', );
Сложенији упити
мета_куери
Главни аргумент који ћете користити за сложене упите је meta_query
. Овај аргумент сам по себи не чини ништа. То ВордПресс-у само говори да желите да направите упит за прилагођена мета поља. Унутар њих ћете додати додатне аргументе meta_query
који ће се користити за дефинисање упита.
кључ, вредност и упореди
Аргументи key
, value
рад потпуно исти начин као што је meta-key
, meta-value
како је горе описано. Комплекс compare
је сличан оном compare
горе наведеном, али узима другачију листу упоређивача. Комплекс compare
користи '=', '! =', '>', '> =', '<', '<=', 'ЛИКЕ', 'НОТ ЛИКЕ', 'ИН', 'НОТ ИН', 'ИЗМЕЂУ ',' НЕ ИЗМЕЂУ ',' ПОСТОЈИ 'или' НЕ ПОСТОЈИ '. value
може бити низ, али само када упоређивање користи „ИН“, „НОТ ИН“, „БЕТВЕЕН“ или „НОТ БЕТВЕЕН“.
Ако користите „ПОСТОЈИ“ или „НЕ ПОСТОЈИ“ са compare
, не морате да наведете value
аргумент.
Ево примера који ће постављати упите за постове ако има „поље1“ са вредношћу „подаци1“ и „поље2“ са вредношћу која није „податак2“.
$args = array( 'meta_query' => array( array( 'key' => 'field1', 'value' => 'data1' ), array( 'key' => 'field2', 'value' => 'data2', 'compare' => '!=', ) ) );
однос
relation
Се користи када желите да упит прилагођену мета података помоћу логичан однос. Можете користити AND
или OR
. На пример, AND
упоређиваћете да ли подаци1 и подаци2 испуњавају критеријуме, а користите OR
ако подаци1 или подаци2 испуњавају критеријуме.
Овај аргумент је самосталан. Значи да се не појављује у појединачним прилагођеним параметрима мета поља. Погледајмо пример. Овај пример ће тражити само постове који имају „фиелд1“ са вредношћу „дата1“ и „фиелд2“ са вредношћу „дата2“.
$args = array( 'meta_query' => array( 'relation' => 'AND' array( 'key' => 'field1', 'value' => 'data1', ), array( 'key' => 'field2', 'value' => 'data2', ), ) );
Ако сте променили relation
у „ИЛИ“. Тада би се поставило питање било којим постовима ако „поље1“ има вредност „подаци1“ или ако „поље2“ има вредност „подаци2“.
тип
type
Аргумент вам омогућава да одаберете врсту података на упит. Можете да користите „НУМЕРИЦ“, „БИНАРИ“, „ЦХАР“, „ДАТЕ“, „ДАТЕТИМЕ“, „ДЕЦИМАЛ“, „ПОТПИСАНО“, „ТИМЕ“ или „УНСИГНЕД“.
Тип „ДАТУМ“ се може користити са compare
„ИЗМЕЂУ“ само ако је формат датума „ГГГГММДД“.
Овај пример ће поставити упит било којој пошти где је вредност „поље1“ нумеричка.
$args = array( 'meta_query' => array( array( 'key' => 'field1', 'value' => 'data1', 'type' => 'NUMERIC' ) ) );
Пример из стварног света
До сада сам давао само примере са произвољним подацима и пољима. Сада бих желео да вам покажем пример стварног света за постављање упита према прилагођеним мета пољима.
Сценарио
Направили сте прилагођени тип објаве догађаја. Тип објаве догађаја садржи прилагођено поље за датум са ИД-ом event_date
. Желите да направите упит који ће приказивати све догађаје који ће започети на тренутни датум у наредних 30 дана.
meta_query
Аргумент ћемо користити као што желимо да користимо type
аргумент да дефинишемо поље „датум_датума“ као тип података „ДАТУМ“.
Ово је упит:
$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 );
То value
је низ текућег датума - 1 дан и 31 дан од тренутног датума. Будући да користимо компаратор „ИЗМЕЂУ“, тражит ће се само постови између поља вриједности, па их желимо надокнадити за један дан.
Помоћу овог упита приказаћете било који догађај који се догоди у наредних 30 дана.
Закључак
WP_Query
Класа је веома флексибилан класа која ће вам омогућити да креирате мноштво прилагођених упита. Ако желите да сазнате више о различитим аргументима које можете користити за упите, препоручујем да погледате WP_Query
страницу кодекса.