Решение проблемы с выводом сообщения при отсутствии постов в WordPress

    При разработке шаблона для WordPress возникла проблема: посты на страницу добавляются корректно, однако при их полном отсутствии не отображается соответствующее уведомительное сообщение для пользователя.

    Исходный код с ошибкой

    В исходной реализации проверка условия if ( $posts ) выполняется некорректно для данной задачи. Код выводит список постов, но логика обработки пустого состояния работает не так, как ожидалось.

    Анализ проблемы

    Основная причина заключается в том, что переменная $posts, вероятно, всегда содержит какое-то значение (например, пустой массив или результат запроса), поэтому условие else никогда не выполняется. Необходимо проверять не просто существование переменной, а наличие в ней реальных записей.

    Исправленное решение

    Для корректной работы нужно модифицировать проверку следующим образом:

    • Выполнять запрос к базе данных для получения постов
    • Проверять результат запроса на наличие элементов
    • Выводить либо список постов, либо сообщение об их отсутствии

    Вот исправленная версия кода:

    <ul class="article__list">
        <?php
            global $post;
            $myposts = get_posts([
                'posts_per_page' => -1,
                'offset' => 4
            ]);
            
            if (!empty($myposts)) {
                foreach($myposts as $post) {
                    setup_postdata($post);
        ?>
                    <li><a class="article__link" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php
                }
            } else {
        ?>
                <h2 class="no-articles">Здесь пока ничего нет.</h2>
        <?php
            }
            
            wp_reset_postdata();
        ?>
    </ul>

    Ключевые изменения

    • Запрос постов вынесен за пределы условия
    • Проверка выполняется функцией !empty($myposts), которая корректно определяет пустой массив
    • Структура кода стала более логичной и читаемой
    • Сообщение "Здесь пока ничего нет" теперь гарантированно появляется при отсутствии записей

    Это решение обеспечивает предсказуемое поведение шаблона в обоих сценариях: как при наличии постов, так и при их отсутствии.