Как вывести записи с картинкой из категории сайта WordPress с размещением отдельно по годам

Небольшой пример 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>


guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии