Skip to content

Понимание Главного цикла WordPress: сердце вашего сайта

4 сентября, 2025 ·

Если представить тему WordPress как тело, то Главный цикл (The Loop) — это его сердце. Именно он отвечает за самое главное: обработку и вывод записей (постов) вашего сайта на страницу. Без него вы увидите лишь пустоту.

Эта статья научит вас понимать, как работает The Loop, и использовать его ключевые функции для вывода заголовка, контента и другой информации о записях.


1. Что такое Главный цикл (The Loop)?

The Loop — это основной механизм в WordPress, который проверяет, есть ли в базе данных записи для отображения на текущей странице (главной, категории, отдельной записи и т.д.). Если записи есть, он загружает их данные по одной, позволяя вам форматировать и выводить их с помощью специальных функций.

Проще говоря, это цикл while, который работает по принципу: «Пока есть записи, отображай их».


2. Базовая структура Главного цикла

Вот как выглядит минимальная, но полноценная структура Главного цикла. Его обычно размещают в файле темы index.phpsingle.phparchive.php или в любом другом шаблоне, где нужно вывести список постов.

php
<!-- Здесь, внутри цикла, мы выводим содержимое каждой записи -->
<h2><?php the_title(); ?></h2>
<div class="content">
<?php the_content(); ?>
</div>

<?php endwhile; ?>

<!-- Этот блок выполнится, если записей не найдено -->
<p>Записей не найдено.</p>
    

Давайте разберем этот код по шагам.


3. Детальный разбор кода и ключевых функций

Шаг 1: Проверка на наличие записей — have_posts()

php

<?php if ( have_posts() ) : ?>
  • Функция have_posts() проверяет, есть ли в текущем запросе (например, записи в категории, которую открыл пользователь) какие-либо посты для отображения.
  • Она возвращает true, если посты есть, и false, если их нет.
  • Эта проверка запускает весь процесс.

Шаг 2: Запуск цикла — while ( have_posts() ) : the_post();

php

<?php while ( have_posts() ) : the_post(); ?>

Это самая важная строка. Здесь происходит следующее:

  1. while ( have_posts() ) — Цикл while будет продолжаться до тех пор, пока функция have_posts() возвращает true.
  2. the_post(); — На каждой итерации цикла эта функция переключается на следующую запись в результате запроса. Ее критически важно вызывать, так как она:
    • Устанавливает глобальные переменные (как $post).
    • Делает доступными для использования все те функции вывода, которые мы рассмотрим ниже (the_title()the_content() и др.). Без the_post() эти функции ничего не будут знать о текущей записи.

Шаг 3: Вывод данных текущей записи (внутри цикла)

Внутри цикла вы можете использовать множество функций WordPress для вывода информации о текущей записи. Они работают только после вызова the_post().

  • <?php the_title(); ?>
    • Что делает: Выводит заголовок текущей записи.
    • Частый вариант использования: Обернуть в ссылку на полную запись.
    php<h2><a href=»<?php the_permalink(); ?>»><?php the_title(); ?></a></h2>
  • <?php the_content(); ?>
    • Что делает: Выводит полное содержимое записи. В отличие от the_excerpt(), он показывает весь текст, включая все HTML-теги и разделитель <!--more-->.
    • Важно: Используется преимущественно на странице самой записи (single.php).
  • <?php the_excerpt(); ?>
    • Что делает: Выводит краткое описание (анонс) записи. WordPress автоматически обрезает текст до ~55 слов и добавляет многоточие в конце. Идеально для архивов, категорий и главной страницы.
  • <?php the_permalink(); ?>
    • Что делает: Возвращает URL (ссылку) на полную версию текущей записи. Сама по себе не выводит ссылку, а только возвращает ее. Поэтому используется внутри HTML-тега <a href="">.
  • Мета-данные: <?php the_author(); ?><?php the_date(); ?><?php the_category(); ?>
    • Что делают: Выводят имя автора, дату публикации и список категорий записи соответственно.
    • Пример использования:
    php<p class=»post-meta»> Опубликовано: <?php the_date(); ?> | Автор: <?php the_author(); ?> | Категория: <?php the_category(‘, ‘); ?> </p>
  • <?php the_post_thumbnail(); ?>
    • Что делает: Выводит миниатюру (изображение записи), если она установлена.

Шаг 4: Завершение цикла — endwhile; endif;

php
&lt;?php endwhile; ?>
&lt;?php else : ?>
&lt;p>Записей не найдено.&lt;/p>
&lt;?php endif; ?>
  • endwhile; — закрывает цикл while.
  • else : — это часть условия if. Код внутри этого блока выполнится, если have_posts() вернул false (записей для отображения нет).
  • endif; — окончательно завершает условный оператор.

4. Полный практический пример

Вот как может выглядеть типичный вывод записи в цикле для блога (например, в index.php).

php
&lt;?php if ( have_posts() ) : ?>
&lt;?php while ( have_posts() ) : the_post(); ?>

&lt;article id="post-&lt;?php the_ID(); ?>" &lt;?php post_class(); ?>>

&lt;!-- Заголовок записи как ссылка -->
&lt;h2 class="entry-title">
&lt;a href="&lt;?php the_permalink(); ?>" title="&lt;?php the_title_attribute(); ?>">
&lt;?php the_title(); ?>
&lt;/a>
&lt;/h2>

&lt;!-- Мета-данные: Дата и автор -->
&lt;div class="entry-meta">
&lt;time datetime="&lt;?php echo get_the_date('c'); ?>">&lt;?php the_date(); ?>&lt;/time>
&lt;span class="author">Автор: &lt;?php the_author(); ?>&lt;/span>
&lt;/div>

&lt;!-- Миниатюра записи -->
&lt;?php if ( has_post_thumbnail() ) : ?>
&lt;a href="&lt;?php the_permalink(); ?>" title="&lt;?php the_title_attribute(); ?>">
&lt;?php the_post_thumbnail('medium'); ?>
&lt;/a>
&lt;?php endif; ?>

&lt;!-- Краткое содержание записи -->
&lt;div class="entry-content">
&lt;?php the_excerpt(); ?>
&lt;/div>

&lt;!-- Ссылка "Читать далее" -->
&lt;a href="&lt;?php the_permalink(); ?>" class="read-more">Читать далее &raquo;&lt;/a>

&lt;/article>

&lt;?php endwhile; ?>

&lt;!-- Навигация по страницам (если постов много) -->
&lt;div class="pagination">
&lt;?php posts_nav_link(); ?>
&lt;/div>

&lt;?php else : ?>

&lt;p>К сожалению, по вашему запросу ничего не найдено.&lt;/p>

&lt;?php endif; ?>

5. Важные замечания и альтернативный синтаксис

  • wp_reset_postdata(); — Если вы внутри своего цикла используете пользовательские запросы (например, с WP_Query), важно сбрасывать глобальные переменные основного цикла этой функцией после его завершения. Для стандартного Главного цикла это обычно не требуется.
  • Альтернативный синтаксис: Некоторые разработчики предпочитают использовать фигурные скобки. Это то же самое.php<?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // … вывод содержимого } } else { echo ‘<p>Записей не найдено.</p>’; } ?>

Заключение

Вы освоили фундаментальную концепцию разработки тем WordPress — Главный цикл. Теперь вы понимаете:

  1. Как он работает: if ( have_posts() ) → while ( have_posts() ) → the_post().
  2. Какие функции использовать внутри: the_title()the_content()the_excerpt()the_permalink()the_author()the_date()the_category().
  3. Где его размещать: в основных файлах шаблонов вашей темы.

Потренируйтесь! Создайте простую тему, поэкспериментируйте с выводом разных данных внутри цикла, и вы очень быстро научитесь управлять отображением контента на вашем сайте.

Похожие материалы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *