Фильтрация мета-запроса WP-запроса по числовым значениям не работает
Это было очень плотное название.
У меня есть пользовательский тип записи "событие", в котором есть поле выбора даты/времени "event_date" благодаря расширенному плагину пользовательских полей. Этот выбор даты/времени сохраняет метку времени UNIX в базе данных. Я пытаюсь использовать WP_Query, чтобы получить все события, которые происходят сегодня или в будущем. Это код, который у меня есть прямо сейчас:
$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 );
Это дает мне все события, прошлые и будущие.
Я понимаю, что временные метки хранятся в виде строки в базе данных, поэтому "сравнить" => ">=" обычно не работает, но то, что я прочитал в Google и в Кодексе, что "тип" => "числовой", должно привести строку к целому числу и позволить сравнить ее с моим значением сегодня утром в полночь. К сожалению, это, похоже, не работает, и я не понимаю, почему.
2 answers
Попробуйте использовать массив массивов в своем мета-запросе.
$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 );
Вау, вы спасли мне день этим ответом, я пытался фильтровать сообщения по пользовательскому числовому полю под названием type_price, и я пытался сделать это таким образом:
'meta_query' => array(
array(
'key' => 'type_price',
'value' => array( 0, 500000 ),
'compare' => 'BETWEEN',
'type' => 'NUMERIC',
)),
Но это должно быть так, как это делается 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',
)
)),
Большое спасибо:)