Filtrarea unei interogări WP_Query meta_query după valori numerice nu funcționează
Acesta a fost un titlu destul de dens.
Am un tip personalizat de postare "event" care are un câmp de selectare a datei/orei "event_date" datorită plugin-ului Advanced Custom Fields. Acest selector salvează un timestamp UNIX în baza de date. Încerc să folosesc WP_Query pentru a obține toate evenimentele care sunt astăzi sau în viitor. Iată codul pe care îl am în prezent:
$args = array(
'post_type' => 'event',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
'key' => 'event_date',
'compare' => '>=',
'value' => intval(strtotime(date('Y-m-d'))),
'type' => 'numeric'
),
);
$query = new WP_Query( $args );
Îmi returnează toate evenimentele, atât trecute cât și viitoare.
Îmi dau seama că timestamp-urile sunt stocate ca șiruri de caractere în baza de date, așa că 'compare' => '>=' în mod normal nu ar funcționa, dar din ce am citit pe Google și în Codex, 'type' => 'numeric' ar trebui să convertească șirul la întreg și să permită compararea cu valoarea mea de la miezul nopții. Din păcate, acest lucru nu pare să funcționeze și nu înțeleg de ce.
Încearcă o matrice de matrice în interogarea ta meta.
$args = Array(
'post_type' => 'event',
'posts_per_page' => -1,
'meta_key' => 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'event_date',
'compare' => '>=',
'value' => intval(strtotime(date('Y-m-d'))),
'type' => 'numeric'
)
),
);
$query = new WP_Query( $args );

wow, mi-ai salvat ziua cu acest răspuns, încercam să filtrez postările după un câmp numeric personalizat numit type_price și încercam să o fac așa:
'meta_query' => array(
array(
'key' => 'type_price',
'value' => array( 0, 500000 ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
)),
dar trebuia făcut astfel pentru a le sorta ASC:
array(
'posts_per_page' => -1,
'meta_key' => 'type_price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'type_price',
'value' => array( 0, 500000 ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
)
)),
mersi mult :)
