Конвертировать ISOdate в phpdate для запроса настраиваемого поля ACF - PullRequest
0 голосов
/ 06 января 2020

Я создал пользовательский модуль для создания бобра (wordpress). Я загружаю сообщения через Ajax. Мне нужно запрашивать сообщения, основанные на дате настраиваемого поля ACF.

Я публикую дату в формате ISO8601 (например, 2013-12-01T00: 00: 00-05: 00). На стороне сервера я хватаю начало и конец. Я конвертирую их в формат, необходимый для запроса ACF https://www.advancedcustomfields.com/resources/date-picker/

$start_date = date('Ymd', strtotime($_POST['start']));
$end_date = date('Ymd', strtotime($_POST['end'])); 

Я запускаю запрос и ничего не получаю. Я повторяю строку, и они выглядят правильно.

Если я установлю дату в соответствии с примером в документации ACF - это работает (код ниже). Поэтому я, должно быть, неправильно конвертирую ISOdate $_POST['start']. Как мне преобразовать ISODATE, чтобы я мог использовать его в запросе?

function get_ajax_event_calendar_posts() {

    $today = date('Ymd'); // this works...

    $args = array(
        'post_type' => array('event'),
        'meta_query' => array(
            array(
                'key'           => 'start_date',
                'compare'       => '<=',
                'value'         => $today,
            ),
            array(
                'key'           => 'end_date',
                'compare'       => '>=',
                'value'         => $today,
            )
        ),
        'post_status' => array('publish'),
        'posts_per_page' => 100,
        'nopaging' => true,
        'order' => 'DESC',
        'orderby' => 'date'
    );
    // The Query
    $ajaxposts = get_posts( $args ); 
    //... etc
}

** edit ** .... дата не была проблемой. У меня была проблема ... поменял мои сравнения в правильном направлении и все работает ...

1 Ответ

1 голос
/ 06 января 2020

Вы не сказали, в каком формате вам действительно нужно хранить данные, однако вы сказали, что date('Ymd') работает. В любом случае используйте класс DateTime:

<?php

$x = new DateTime('2013-12-01T00:00:00-05:00');
echo $x->format('d/m/Y H:i:s') . "\n";     // 01/12/2013 00:00:00
echo $x->format('dmY') . "\n";     // 01122013

Вот форматы даты https://www.php.net/manual/en/function.date.php

...