Как работает цикл the loop в темах WordPress – часть 4
В статье Cоздание index.php для темы WordPress — часть 2 мы рассмотрели формирование файла index.php, в котором применили функцию <?php get_template_part(‘loop’); ?>, подключив тем самым файл loop.php
Дословно loop – это цикл. В WordPress под циклом (loop) понимают вывод постов. Простой пример цикла:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<!--
Вывод поста с названием, категорией, тегами, датой публикации, прочее…
-->
<?php endwhile; ?>
<?php endif; ?>
Как работает цикл (loop)?
- if (have_posts()) — проверяет, есть ли на сайте посты;
- while (have_posts()) — пока есть хотя бы один пост в базе, выполнит функцию the_post();
- the_post() — выводит пост;
- endwhile; — закрывает while();
- endif; — закрывает if();
Обратите внимание – знак в команде php «:» означает условие, а знак «;» – закрывает команду.
Изучим содержимое нашего файла loop.php:
<div id="content">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<article class="post">
<h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
<p class="time"><?php the_time('F j, Y'); ?> в <?php the_time('g:i a'); ?> | <?php the_category(', '); ?> | <?php comments_number('Нет комментариев', '1 комментарий', '% комментариев'); ?></p>
<?php the_content('read more >'); ?>
</article>
<?php endwhile; ?>
<div class="navigation">
<?php posts_nav_link(); ?>
</div>
<?php else : ?>
<div class="post">
<h2>По Вашему запросу ничего не найдено!</h2>
</div>
<?php endif; ?>
</div>
В нашем случае loop работает так:
1) проверяем, есть ли посты на сайте if ( have_posts() и пока посты есть while ( have_posts() , выводим их функцией the_post(); в виде:
<article class="post">
<h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
<p class="time"><?php the_time('F j, Y'); ?> в <?php the_time('g:i a'); ?> | <?php the_category(', '); ?> | <?php comments_number('Нет комментариев', '1 комментарий', '% комментариев'); ?></p>
<?php the_content('читать далее'); ?>
</article>
У нас каждый пост обрамлен в <article class=”post”></article> , имеет название-ссылку <h3><a href=”<?php the_permalink() ?>”><?php the_title(); ?></a></h3>, которая состоит из функций:
- the_permalink()– выводит ссылку на пост, который отображается в цикле;
- the_title – выводит название поста;
- the_time – выводит дату и время публикации;
- the_category – выводит категорию, в которой пост;
- comments_number – выводит общее кол-во комментариев поста;
- the_content – выводит контент текущего поста
2) Когда выведены все посты (кол-во их указывается в админке WordPress) согласно условию <?php endwhile; ?> , срабатывает функция <?php posts_nav_link(); ?> , которая выводит ссылки на предыдущую и следующую страницы.
3) Если же никаких постов не нашлось, то срабатывает альтернативный вариант <?php else : ?> и выводится <h2>По Вашему запросу ничего не найдено!</h2> .
На этом цикл закрывается – <?php endif; ?> .
На сегодня всё! В следующем уроке рассмотрим цикл (loop) в рамках файла single.php, который выводит конкретный пост при его открытии по ссылке.