WP_Query() показ записей, которые заканчиваются позже сегодняшней даты

10 июл. 2012 г., 03:48:14
Просмотры: 24.6K
Голосов: 6

У меня есть следующий запрос:

$wp_query = new WP_Query( 
   'meta_key'     => 'end_date', 
   'meta_value'   => 'today', 
   'meta_compare' => '>=', 
   'post_type'    => 'vehicle' 
);

Я хочу показать только те записи типа 'vehicle', у которых мета-поле end_date содержит дату, которая позже сегодняшней даты.

Как это можно реализовать?

0
Все ответы на вопрос 2
1
18

Во-первых, формат даты должен быть в порядке убывания от больших единиц к меньшим, т.е.: год, месяц, день, час, минута, секунда и т.д. В противном случае MySQL не сможет выполнять запросы или сортировать по этому полю. В этом примере я использую год - месяц - день:

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'meta_query' => array(
        array(
            'key' => 'end_date',
            'value' => $today,
            'compare' => '>=',
            'type' => 'DATE'
        )
    )
);
$query = new WP_Query( $args );
10 июл. 2012 г. 04:31:26
Комментарии

+1 Кстати: Если вопрос достаточно хорош для ответа, то он также заслуживает и апвоута. Похожий вопрос и заглядывай в чат как-нибудь :)

kaiser kaiser
10 июл. 2012 г. 08:20:32
0

WordPress добавил поддержку запросов по дате начиная с версии 3.7. Таким образом, вы всегда можете использовать:

$today = date( 'Y-m-d' );
$args = array(
    'post_type' => 'vehicle',
    'date_query' => array(
        //установите диапазон дат с помощью строк!
        'after' => 'today',
        //разрешить возвращение точных совпадений
        'inclusive'         => true,
    ),
);
$query = new WP_Query( $args );

Подробнее об этом можно узнать по ссылке https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

13 окт. 2015 г. 01:18:39