Вопрос или проблема
В моем проекте есть страница событий, где отображаются все предстоящие события в соответствии с датами. Но моему клиенту нужно еще одна категория под названием “Прошедшие события“, где должны храниться все прошедшие события. Так что, когда событие истечет, оно должно переместиться в эту категорию прошедших событий. Кто-нибудь может подсказать, как это реализовать?
Требуется помощь.
Вам нужно будет использовать date
запрос:
$args = array (
'cat' => '1234', // если используется категория
'post_type' => 'events', // если это пользовательский тип записи
'paged' => get_query_var('paged'),
'order' => 'DESC',
'paged' => $paged,
'date_query' => array( // это то, что вам нужно
array(
'before' => array( // это 'до сегодняшнего дня'...
'year' => date('Y'),
'month' => date('m'),
'day' => date('d')
),
'inclusive' => true,
),
),
);
$past_events = new WP_Query($args);
Категории, тип записи и дата, которые вы считаете ‘прошедшими’, можно изменить там.
.
Ответ или решение
Для реализации функции отображения прошедших событий в вашем проекте, вам потребуется внести изменения в запросы данных, используемые для вывода мероприятий. В этом ответе я подробно опишу, как создать отдельный раздел для "Прошедших событий", используя возможности WordPress.
Этапы реализации
-
Создание категории "Прошедшие события"
Если вы еще не создали категорию "Прошедшие события", вам нужно это сделать. Это можно сделать через панель администратора WordPress, перейдя в раздел "Записи" > "Категории". Создайте новую категорию и запомните её ID, так как он понадобится вам для запросов. -
Настройка кастомного пост-типа (если еще не настроен)
Убедитесь, что вы используете кастомный пост-тип для событий. Если у вас его еще нет, создайте кастомный пост-тип, например:function create_event_post_type() { register_post_type('events', array( 'labels' => array( 'name' => __('Events'), 'singular_name' => __('Event') ), 'public' => true, 'has_archive' => true, 'supports' => array('title', 'editor', 'custom-fields', 'thumbnail'), ) ); } add_action('init', 'create_event_post_type');
-
Запрос на получение прошедших событий
Для отображения прошедших событий используйте следующий код в вашем шаблоне (например, вarchive-events.php
или в любом другом подходящем файле):$args = array( 'post_type' => 'events', 'category__in' => array(1234), // Замените 1234 на ID вашей категории "Прошедшие события" 'date_query' => array( array( 'before' => date('Y-m-d'), // События до сегодняшнего дня 'inclusive' => true, ), ), 'orderby' => 'date', 'order' => 'DESC', 'paged' => get_query_var('paged') ? get_query_var('paged') : 1, ); $past_events = new WP_Query($args);
-
Вывод результата
После выполнения запроса, используйте цикл для отображения полученных событий:if ($past_events->have_posts()) : while ($past_events->have_posts()) : $past_events->the_post(); echo '<h2>' . get_the_title() . '</h2>'; echo '<div>' . get_the_content() . '</div>'; // Дополнительная информация, например дата события endwhile; wp_reset_postdata(); else : echo '<p>Нет прошедших событий.</p>'; endif;
Заключение
Следуя указанным шагам, вы сможете успешно создать раздел для отображения "Прошедших событий" в вашем проекте. Убедитесь, что ваша структура категорий и пост-типов правильно настроена, чтобы обеспечить эффективный вывод данных. Этот подход гарантирует, что ваши прошедшие события будут аккуратно храниться и отображаться отдельно от предстоящих, что улучшит пользовательский опыт.
SEO-оптимизация
Для повышения видимости вашей страницы прошедших событий в поисковых системах, обратите внимание на следующие рекомендации:
- Используйте ключевые слова, связанные с вашими событиями, в заголовках и содержимом.
- Оптимизируйте мета-теги (title, description) страницы, чтобы четко охарактеризовать содержание.
- Добавьте структурированные данные для событий, чтобы помочь поисковым системам лучше индексировать ваши записи.
Следуя этой стратегии, вы не только выполните запрос клиента, но и улучшите общую управляемость и видимость вашего сайта.