SOFT SPRINT

softsprint.net
(en) shop

Как работает цикл 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, который выводит конкретный пост при его открытии по ссылке.

CONTACT US
Cookies | Privacy Policy | Terms and ConditionsSoftSprint ©