Фильтрация мета-запроса 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 и в Кодексе, что "тип" => "числовой", должно привести строку к целому числу и позволить сравнить ее с моим значением сегодня утром в полночь. К сожалению, это, похоже, не работает, и я не понимаю, почему.

Author: Ryan Giglio, 2013-05-07

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 );
 9
Author: Kailey Lampert, 2013-05-07 18:10:57

Вау, вы спасли мне день этим ответом, я пытался фильтровать сообщения по пользовательскому числовому полю под названием 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',
            )
        )),

Большое спасибо:)

 1
Author: user91935, 2016-04-07 07:44:46