Отображать посты с сегодняшнего дня и будущие в виджете постов Elementor.

Вопрос или проблема

Согласно документации Elementor https://developers.elementor.com/custom-query-filter/#Multiple_Post_Types_in_Posts_Widget

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

Я использую этот код:

add_action( 'elementor/query/my_custom_filter', function( $query ) {    
    $meta_query = $query->get( 'meta_query' );
    $meta_query[] = [       
        'post_status' => 'publish,future',
        'order' => 'ASC',
        'posts_per_page' => 3,
        'date_query' => array(
            array(
                'after' => date('Y-m-d'),
                'inclusive' => true,
            )
        ),    
    ];
    $query->set( 'meta_query', $meta_query );   
});

но это не работает.

Как бы вы это сделали?

Вот рабочее решение:

add_action( 'elementor/query/my-custom-query', function( $query ) {  

    $meta_query = $query->get( 'meta_query' );
$query->set( 'date_query', array(
    array(
            'after' => date('l, F jS, Y', strtotime('+0 day')),
        )
    ) ); 
} );

Вы можете изменить strtotime (+1 день….+n день ….-n день), чтобы получить дату события, которая вам нужна.

Формат даты здесь – (‘l, F jS, Y’), вы можете изменить его в зависимости от настроек вашего WordPress (Панель управления > настройки > Общие)
Идентификатор запроса Elementor: my-custom-query

Ответ или решение

Чтобы отобразить публикации, начиная с сегодняшнего дня и включая будущие посты в виджете публикаций Elementor, нам нужно настроить собственный запрос с правильным использованием date_query. Давайте рассмотрим, как это сделать, а также присмотрим за несколькими ключевыми моментами для обеспечения его корректной работы.

Шаг 1: Использование хука elementor/query

На первом этапе мы будем использовать хук elementor/query, чтобы изменить параметры запроса, который Elementor использует для получения постов. В нашем случае, мы хотим вывести посты с сегодняшней даты и всё, что произойдет в будущем. Для этого требуется задать правильные параметры в date_query.

Шаг 2: Код для настройки запроса

Вот код, который можно использовать для установки нужных параметров:

add_action( 'elementor/query/my_custom_query', function( $query ) {  
    // Устанавливаем параметры date_query
    $query->set( 'date_query', array(
        array(
            'after' => date('Y-m-d'), // Текущая дата в формате YYYY-MM-DD
            'inclusive' => true, // Включаем сегодняшнюю дату
        )
    ) );

    // Устанавливаем сортировку постов по дате и статус публикации
    $query->set( 'post_status', 'publish,future' ); // Публикации и будущие посты
    $query->set( 'order', 'ASC' ); // Сортируем по возрастанию
    $query->set( 'posts_per_page', 3 ); // Устанавливаем максимальное количество отображаемых постов
});

Шаг 3: Настройка Elementor

После того как код добавлен в файл вашей темы (обычно в functions.php), вам необходимо настроить виджет публикаций в Elementor:

  1. Откройте редактор страницы Elementor, на которой вы хотите отобразить посты.
  2. Добавьте виджет "Posts" на свою страницу.
  3. Перейдите в настройки виджета и выберите "Query" (Запрос).
  4. В разделе "Custom Query ID" укажите my_custom_query, чтобы привязать ваш кастомный запрос к этому виджету.

Шаг 4: Тестирование и отладка

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

Примечания

  • Вы можете изменять параметр strtotime в коде, чтобы адаптировать его под любые специфические запросы по датам, например, для получения событий через несколько дней или месяцев.
  • Убедитесь, что все используемые форматы даты соответствуют вашим настройкам WordPress в разделе "Задания" -> "Настройки".

Этот подход обеспечит гибкость и точность при выводе информации о мероприятиях, сохраняя ваш контент актуальным и доступным для вашей аудитории.

Оцените материал
Добавить комментарий

Капча загружается...