У меня есть несколько сообщений с пользовательским полем с именем «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
Я думаю, что если бы вы слишком внимательно присматривались к данным, хранящимся в этом фактическом настраиваемом / метаполе, вы бы обнаружили, что они хранятся в виде метки времени 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 );
Использование даты (‘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' => '<'
)
)
);