Используйте мета для сопоставления даты в WP_Query

У меня есть несколько сообщений с пользовательским полем с именем «event_end_date». Я использую Расширенные настраиваемые поля для этого. Как я могу получить сообщения, которые имеют дату окончания старше, чем сегодня? Я пытался с этим, но не смог дозвониться.

$args = array(
'cat'       => '6, -33',
'numberposts'   => -1,
'post_type'     => 'post',
'meta_query'    => array(
array(
'key' => 'event_end_date',
'value' => date('y-m-d'),
'type' => 'DATE',
'compare' => '>'
)
)
);

//get results
$the_query = new WP_Query( $args );

Здесь я хотел те посты, которые имеют категорию «6» и не имеют категории «33». В серверной части поле ‘event_end_date’ имеет следующие значения:

Field Type: Date Picker
Display format: 10/11/2014
Return format: 20141110

0

Решение

Я думаю, что если бы вы слишком внимательно присматривались к данным, хранящимся в этом фактическом настраиваемом / метаполе, вы бы обнаружили, что они хранятся в виде метки времени Unix, а не в формате возврата или отображения, и из-за этого ваша проблема заключается в что ваш формат не совпадает.

Вы можете учесть эту разницу, используя U код для метки времени Unix с date('U') вместо date('y-m-d'),

В этом случае ваш код будет выглядеть так:

$args = array(
'cat'       => '6,-33',
'numberposts'   => -1,
'post_type'     => 'post',
'meta_query'    => array(
array(
'key' => 'event_end_date',
'value' => date('U'),
'type' => 'DATE',
'compare' => '>'
)
)
);

//get results
$the_query = new WP_Query( $args );
0

Другие решения

Использование даты (‘Y-m-d’, time ()) решило проблему для меня.

$args = array(
'category__and'     => array(6),
'category__not_in'  => array(33),
'numberposts'       => -1,
'post_type'         => 'post',
'post_status'       => 'publish',
'meta_query'        => array(
array(
'key'       => 'event_end_date',
'value'     => date('Y-m-d', time()),
'type'      => 'DATE',
'compare'   => '<'
)
)
);
0

По вопросам рекламы [email protected]