Вопрос или проблема
Согласно документации 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:
- Откройте редактор страницы Elementor, на которой вы хотите отобразить посты.
- Добавьте виджет "Posts" на свою страницу.
- Перейдите в настройки виджета и выберите "Query" (Запрос).
- В разделе "Custom Query ID" укажите
my_custom_query
, чтобы привязать ваш кастомный запрос к этому виджету.
Шаг 4: Тестирование и отладка
После выполнения всех шагов, сохраните изменения и проверьте, отображаются ли посты с сегодняшней даты и будущие записи в виджете. Если что-то не работает, убедитесь в отсутствии ошибок в консоли браузера и проверьте, активна ли ваша тема и плагин Elementor.
Примечания
- Вы можете изменять параметр
strtotime
в коде, чтобы адаптировать его под любые специфические запросы по датам, например, для получения событий через несколько дней или месяцев. - Убедитесь, что все используемые форматы даты соответствуют вашим настройкам WordPress в разделе "Задания" -> "Настройки".
Этот подход обеспечит гибкость и точность при выводе информации о мероприятиях, сохраняя ваш контент актуальным и доступным для вашей аудитории.