Цикл Wordpress

Давайте разберем код файла index.php из нашей темы.

Ключевое место в этом файле занимает так называемый Цикл Wordpress (по-английски the Loop). Вот он:

<?php while ( have_posts() ) { the_post(); echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; echo get_the_excerpt(); } ?>

Цикл Wordpress предназначен для вывода списка постов. Давайте разберемся, как он работает.

Как вы видите, цикл крутится, пока выполняется условие while ( have_posts() ). Функция have_posts определяет, остались ли еще какие-нибудь посты для вывода. Если остались - функция возвращает true и цикл крутится дальше, а если не остались - функция возвращает false и цикл прекращает свою работу.

Внутри цикла с помощью специальных функций мы можем выводить данные поста в отформатированном нужным нам образом виде. Ниже мы разберем все используемые в примере функции.

Обратите также внимание на условие if, в которое обернут наш цикл:

<?php if ( have_posts() ) { while ( have_posts() ) { } } else { echo '<p>Записей нет...</p>'; } ?>

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

Функции внутри Цикла Wordpress

Давайте теперь разберем, что делает каждая из функций внутри нашего цикла. Еще раз приведу код цикла:

<?php while ( have_posts() ) { the_post(); echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; echo get_the_excerpt(); } ?>

Как вы уже знаете, данный цикл выводит короткие описания записей, а над описаниями - заголовки этих записей в виде заголовка h3, представляющего собой ссылку на полный текст записи.

Рассмотрим для начала функцию the_post, написанную в начале цикла. Данная функция служебная и необходима для корректной работы Цикла Wordpress. Пока не будем изучать ее глубоко - просто знайте пока, что ее всегда нужно писать в начале цикла.

Давайте теперь рассмотрим строчку, формирующую заголовок-ссылку:

<?php echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; ?>

В данном коде функция get_the_title выводит заголовок записи, а функция get_permalink - ссылку на эту запись.

А вот расположенная под заголовком функция get_the_excerpt выводит короткое описание записи. В качестве короткого описания берется одна из трех вещей.

Если при создании или редактировании записи вы указали отрывок, то возьмется он. Напоминаю, что отрывок задается вот здесь:

Если же отрывок не был задан, то возьмется тизер записи, если он был задан (задается блоком Подробнее).

Если же и тизер не был задан, то функция просто возьмет 55 первых слов статьи, добавит к ним троеточие и выведет на экран.

Сделайте так, чтобы заголовок статьи был не в теге h3, а в теге h2.

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

Вариации функций Wordpress

Рассмотрим функцию get_the_excerpt. Внутри Цикла Wordpress мы выводим данные этой функции через echo:

<?php echo get_the_excerpt(); ?>

В Wordpress существует также функция the_excerpt, которая работает точно также, но не требует echo. То есть мы будем пользоваться этой функцией вот так:

<?php the_excerpt(); ?>

То есть с функцией the_excerpt наш цикл будет выглядеть вот так:

<?php while ( have_posts() ) { the_post(); echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; the_excerpt(); } ?>

В Wordpress очень много функций представляют собой подобные пары. По названию функции обычно видно, выводит она на экран сразу, либо требует команды echo: если имя функции начинается на the_ - то функция выводит данные сразу на экран, а если имя функции начинается на get_ - то функция просто возвращает результат.

Функции, начинающиеся с get_ нужны в том случае, когда вам нужно сформировать какую-либо строку с тегами. Примером может служить наша строка для вывода заголовка:

<?php echo '<h3><a href="'. get_permalink() .'">'. get_the_title() .'</a></h3>'; ?>

Как вы видите, мы используем функции get_permalink и get_the_title для формирования строки. На самом деле существуют также и функции the_permalink и the_title, которые сразу же выводят на экран.

Учтите, что вариант функции с get_ и вариант функции с the_ могут работать немного по-разному и даже иногда принимать разные параметры. В дальнейшем, при изучении новых функций, обращайте на это внимание.

Используя функцию the_permalink выведите в Цикле Wordpress URL ссылки на полный текст записи.

Используя функцию the_title выведите в Цикле Wordpress заголовки записей.