WP_Query для поиска любых записей с post_modified или post_date в выбранном диапазоне дат - PullRequest
1 голос
/ 16 апреля 2019

У нас есть конечная точка REST в Wordpress, которая перечисляет сообщения, которые были изменены между двумя датами.Я пытаюсь изменить это, чтобы включить любые публикации, которые были либо опубликованы, либо изменены в выбранные даты, но у меня возникли проблемы с этим запросом.Соответствующая часть запроса показана ниже:

// If a date has been specified, ensure the date query is performed by last modified date.
if ( $start_date || $end_date ) {
    $query_args['date_query'] = array(
        'column' => 'post_modified',
    );
}

if ( $start_date ) {
    $query_args['date_query'][] = array(
        'after' => $start_date . ' 00:00:00',
    );
}

if ( $end_date ) {
    $query_args['date_query'][] = array(
        'before' => $end_date . ' 23:59:59',
    );
}

$query = new \WP_Query( $query_args );

Когда я пытаюсь изменить это (согласно предложению в этом посте https://wordpress.stackexchange.com/questions/215552/posts-modified-in-the-last-48-hours) на следующее, я получаю больше статей, чем должно- и я думаю, что отношение OR может быть проблемой.

// If a date has been specified, ensure the date query is performed by last modified date.
if ( $start_date || $end_date ) {
    $query_args['date_query'] = 
        array(
            'relation'   => 'OR',
        array(
            'column' => 'post_modified',
        ),
        array(
            'column' => 'post_date',
        )
    );
}

if ( $start_date ) {
    $query_args['date_query'][] = array(
        'after' => $start_date . ' 00:00:00',
    );
}

if ( $end_date ) {
    $query_args['date_query'][] = array(
        'before' => $end_date . ' 23:59:59',
    );
}

Есть другие части этого запроса, которые также проверяют, существует ли определенная таксономия или нет. Мне интересно, вызывает ли отношение OR запросчтобы показать все статьи, которые соответствуют только одному из условий. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения о том, как я могу найти какие-либо статьи, которые имеют post_modified или post_date, которые попадают в указанный диапазон дат - и это будет работать, когда естьдополнительные обязательные условия, такие как таксономическая часть запроса.

1 Ответ

0 голосов
/ 16 апреля 2019

Я смог заставить это работать со следующим кодом:

if ( $start_date && $end_date ){

    $query_args['date_query'] = 
    array(
        'relation'   => 'OR',
    array(
        array('column' => 'post_date',
        'after' => $start_date . ' 00:00:00',
        'before' => $end_date . ' 23:59:59',
    ),
    array('column' => 'post_modified',
        'after' => $start_date . ' 00:00:00',
        'before' => $end_date . ' 23:59:59',
    )
    )
    );

}

Проблема, с которой я столкнулся, заключалась в том, что я не помещал даты начала / окончания в каждом разделе массива отдельно.Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...