Небольшой пример php-кода, позволяющий вывести записи из определенной категории сайта WordPress с размещением отдельно по годам на одной странице.
Сортировка записей в списке производится по дате публикации.
К каждой записи выводится изображение, дата и название.
Также в коде указывается путь до стокового изображения если оно отсутствует у записи и оповещение об отсутствии записей.
Дело остается только за CSS.
Также: Добавил перед архивом еще скрипт, который выводит запланированные записи.
P.S. Следует также добавить для полного функционала несколько хуков - просмотр запланированных записей гостями и изменение URL записи для запланированной.
<div class="merprcode">
<!-- Новый блок -->
<?php
// === Только запланированные мероприятия ===
$args_future = array(
'posts_per_page' => 100,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'events',
'post_status' => 'future',
);
$query_future = new WP_Query($args_future);
?>
<div class="year-section scheduled-events">
<div class="gadisa-list2 gadisa-list">
<?php if ($query_future->have_posts()) : while ($query_future->have_posts()) : $query_future->the_post(); ?>
<div class="post-card scheduled">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) : ?>
<span class="post-thumbnail"><?php the_post_thumbnail('thumbnail'); ?></span>
<?php else : ?>
<span class="post-thumbnail">
<img src="/wp-content/uploads/2024/02/nofona.png" alt="Нет изображения" />
</span>
<?php endif; ?>
<span class="post-date wow fadeInLeft animated">
<?php the_date('F j, Y'); ?>
</span>
<span class="texthome"><?php the_title(); ?></span>
</a>
</div>
<?php endwhile; else : ?>
<div class="no-posts">Предстоящих мероприятий пока нет.</div>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
<?php
// === 2025 ===
$args_2025 = array(
'posts_per_page' => 100,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'events',
'post_status' => array('publish'), // добавлен статус future
'year' => 2025,
);
$query_2025 = new WP_Query($args_2025);
?>
<div class="year-section year-2025">
<h2>Архив мероприятий 2025 года</h2>
<div class="gadisa-list2 gadisa-list">
<?php if ($query_2025->have_posts()) : while ($query_2025->have_posts()) : $query_2025->the_post(); ?>
<div class="post-card">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) : ?>
<span class="post-thumbnail"><?php the_post_thumbnail('thumbnail'); ?></span>
<?php else : ?>
<span class="post-thumbnail">
<img src="/wp-content/uploads/2024/02/nofona.png" alt="Нет изображения" />
</span>
<?php endif; ?>
<span class="post-date wow fadeInLeft animated"><?php echo get_the_date('F j, Y'); ?></span>
<span class="texthome"><?php the_title(); ?></span>
</a>
</div>
<?php endwhile; else : ?>
<div class="no-posts">Записей за 2025 год не найдено.</div>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
<?php
// === 2024 ===
$args_2024 = array(
'posts_per_page' => 100,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'events',
'post_status' => array('publish', 'future'), // добавлен статус future
'year' => 2024,
);
$query_2024 = new WP_Query($args_2024);
?>
<div class="year-section year-2024">
<h2>Архив мероприятий 2024 года</h2>
<div class="gadisa-list2 gadisa-list">
<?php if ($query_2024->have_posts()) : while ($query_2024->have_posts()) : $query_2024->the_post(); ?>
<div class="post-card">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) : ?>
<span class="post-thumbnail"><?php the_post_thumbnail('thumbnail'); ?></span>
<?php else : ?>
<span class="post-thumbnail">
<img src="/wp-content/uploads/2024/02/nofona.png" alt="Нет изображения" />
</span>
<?php endif; ?>
<span class="post-date wow fadeInLeft animated"><?php echo get_the_date('F j, Y'); ?></span>
<span class="texthome"><?php the_title(); ?></span>
</a>
</div>
<?php endwhile; else : ?>
<div class="no-posts">Записей за 2024 год не найдено.</div>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
<?php
// === 2023 ===
$args_2023 = array(
'posts_per_page' => 100,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'events',
'post_status' => array('publish', 'future'), // добавлен статус future
'year' => 2023,
);
$query_2023 = new WP_Query($args_2023);
?>
<div class="year-section year-2023">
<h2>Архив мероприятий 2023 года</h2>
<div class="gadisa-list2 gadisa-list">
<?php if ($query_2023->have_posts()) : while ($query_2023->have_posts()) : $query_2023->the_post(); ?>
<div class="post-card">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) : ?>
<span class="post-thumbnail"><?php the_post_thumbnail('thumbnail'); ?></span>
<?php else : ?>
<span class="post-thumbnail">
<img src="/wp-content/uploads/2024/02/nofona.png" alt="Нет изображения" />
</span>
<?php endif; ?>
<span class="post-date wow fadeInLeft animated"><?php echo get_the_date('F j, Y'); ?></span>
<span class="texthome"><?php the_title(); ?></span>
</a>
</div>
<?php endwhile; else : ?>
<div class="no-posts">Записей за 2023 год не найдено.</div>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
<?php
// === 2022 ===
$args_2022 = array(
'posts_per_page' => 100,
'orderby' => 'date',
'order' => 'DESC',
'category_name' => 'events',
'post_status' => array('publish', 'future'), // добавлен статус future
'year' => 2022,
);
$query_2022 = new WP_Query($args_2022);
?>
<div class="year-section year-2022">
<h2>Архив мероприятий 2022 года</h2>
<div class="gadisa-list2 gadisa-list">
<?php if ($query_2022->have_posts()) : while ($query_2022->have_posts()) : $query_2022->the_post(); ?>
<div class="post-card">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) : ?>
<span class="post-thumbnail"><?php the_post_thumbnail('thumbnail'); ?></span>
<?php else : ?>
<span class="post-thumbnail">
<img src="/wp-content/uploads/2024/02/nofona.png" alt="Нет изображения" />
</span>
<?php endif; ?>
<span class="post-date wow fadeInLeft animated"><?php echo get_the_date('F j, Y'); ?></span>
<span class="texthome"><?php the_title(); ?></span>
</a>
</div>
<?php endwhile; else : ?>
<div class="no-posts">Записей за 2022 год не найдено.</div>
<?php endif; wp_reset_postdata(); ?>
</div>
</div>
</div>