Поддержка Проблемы и решения Cравнить Дату События и Дату сейчас — WP_Query?

  • Добрый день!
    Подскажите пожалуйста, как можно сравнить Дату События (ACF) и Дату сейчас?
    Сравниваться должны День и Месяц вместе.
    В итоге должно получиться что-то наподобие «Этот день в истории».
    К примеру: сегодня 27 октября 2021, в этот день..
    ..и ниже вывод записей от (27 октября) 2013 года, или (27 октября) 2012 года

    Дату «Сейчас» вывожу таким образом:
    $today = current_time('Y-m-d');

    Дата события:
    $acf_date = date_i18n('Y-m-d', strtotime(get_field('event_date')));

    Запрос:
    $query = new WP_Query( $args );

    Критерии запроса:

    $args = array(
    	'meta_query'    => array(
    		'relation'      => 'AND',
    		array(
    			'key'       => $acf_date,
    			'value'     => $today,
    			'compare'   => '<=',
    		),
    	),
    );

    Дата События создана через ACF, где «отображаемая дата» — d/m/Y, а «Возвращаемая дата» — Ymd
    Понятно, что нужно пересобрать критерии запроса.. скорее всего там должно быть 2 массива, один с месяцем, другой с днём.. но как я не пробовал не получается нужное..

    При этом, возможно нужно как-то разделить дату отдельно день, и отдельно месяц, отдельно год.. Но логически кажется должно и так находить.. через какой-нибудь DateTime::createFromFormat(‘Y-m-d’, $acf_date)->format(‘d’);

    var_dump «даты события» и «даты сейчас» отдаёт данные «2021-10-27 2021-10-27».

    Буду благодарен Вашему ответу. Спасибо!

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Как реально дата в базе записана?
    можно посмотреть через get_post_meta

    формат сегодняшней даты должен совпадать с датой в постмета и тогда достаточно обычного сравнения
    ‘compare’ => ‘=’,

    или like если год не учитывать, или вообще год не записывать в постмета

    Да, я попробовал использовать get_post_meta:

    <?php $meta_values = get_post_meta( 3337, 'event_date', true ); ?>
    <?php echo $meta_values ?>

    Выдаёт «19601027»

    Таким образом, я убрал дефисы в переменных $today и $acf_date
    также поставил LIKE, так как по логике мне и нужно чтобы Год не учитывался..

    Однако без изменений, созданы разного рода посты, где, как видно из статьи (ID — 3337) есть сегодняшняя дата (день и месяц) — 19601027

    Цикл её не выводит.. пишет «событий нет»

    Кто-нибудь может ещё что-то подсказать по данному вопросу?
    Так и не выходит сравнить даты..
    Получалось сравнить только строкой — к примеру месяц и день.. 1103
    Но это не верно.. он тогда берет из базы дату 20211030 (где содержится также 1103), то есть он не понимает, что нужно искать и брать только среди 4 последних цифр..

    Столкнулась с подобной проблемой. Сделала так, не знаю насколько правильно. Только я брала не date() а current_time, перевела в строку, а посты отбирала по регулярке 4 символа с конца. Вроде работает ))

    $today = current_time("md");
    $nd =  substr($today, 0, 4);
    
    	$posts = get_posts( array(
        'post_type' => 'post',
        'meta_query' => array(
            array(
                'key'     => "post_data", // это название моего произвольного поля, а не дата записи
                'compare' => 'REGEXP',
                'value'   => $nd.'$',
    	    'type'    => 'CHAR',
            )
        ),
    ));	
    • Ответ изменён 2 года, 2 месяца назад пользователем ludisia.
    • Ответ изменён 2 года, 2 месяца назад пользователем ludisia.
Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Cравнить Дату События и Дату сейчас — WP_Query?» закрыта для новых ответов.