Как работает цикл the loop в темах WordPress – часть 4
В статье Cоздание index.php для темы WordPress — часть 2 мы рассмотрели формирование файла index.php, в котором применили функцию <?php get_template_part(‘loop’); ?>, подключив тем самым файл loop.php
Дословно loop – это цикл. В WordPress под циклом (loop) понимают вывод постов. Простой пример цикла:
1 2 3 4 5 6 | <?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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(); в виде:
1 2 3 4 5 | <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, который выводит конкретный пост при его открытии по ссылке.