Цикл в WordPress

Циклы в WordPress нужны для того, чтобы выводить контент блога (записи и страницы). В зависимости от страницы, на которой вы находитесь, цикл будет вставлять соответствующее содержимое. То есть на на странице с рубриками будет выводиться содержимое рубрик, на странице с постом — сам пост, а на главной то, что указано в настройках Параметры > Чтение и так далее.

Начало цикла

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

Конец цикла

<?php endwhile; ?>

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

В переводе с английского have_posts() означает «есть посты(записи)». Короче говоря до тех пор, пока они есть, цикл будет прокручиваться снова. Чаще всего встречается запись цикла с условием.

Начало цикла

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

Конец цикла

<?php endwhile; else: ?>
<p>Записей не найдено.</p>
<?php endif; ?>

Содержимое цикла

Я уже говорил, что всё, что находится внутри цикла, будь это php-код или HTML, или и то и другое, будет повторяться для каждой записи.

Также существуют специальные теги для вывода информации о посте:

the_title(); // заголовок
the_content(); // контент
the_permalink(); // ссылка
the_excerpt(); // цитата
the_category(', '); // рубрики, в скобках разделитель, например запятая
the_author(); // автор
the_time('j M Y'); // время и(или) дата публикации, в скобках указывается формат, например 'j M Y G:i' - 'день месяц год часы:минуты'

А теперь поинтереснее, теги к записи:

the_tags($before, $separator, $after) // теги(метки)

$before — текст перед тегами, по умолчанию Tags:, $after — текст «после», по умолчанию не выводится ничего, $separator — разделитель тегов, по умолчанию (,) запятая.

Пример:

<?php the_tags('Метки:', ' &bullet; ', '<br />'); ?>

Также можно вывести метки в виде списка:

<?php the_tags('<ul><li>','</li><li>','</li></ul>'); ?>

Миниатюра (изображение) к записи.

the_post_thumbnail();

Только перед тем, как использовать эту функцию, надо включить поддержку миниатюр в вашей WordPress-теме, добавив этот код в файл functions.php:

if ( function_exists('add_theme_support')){ 
  add_theme_support('post-thumbnails'); 
}

В том случае, если вы захотите создать свой собственный цикл, то есть например выводить записи из какой-то определённой рубрики, либо вывести определённое количество записей, не зависящих от настроек в админке, либо отсортировать их случайным образом, (и т.д.) то вам следует воспользоваться query_posts() либо WP_Query()

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Комментарии 4

  • Dmitry22 января 2013 в 17:01 #

    Здравствуйте Михаил! Очень много у Вас полезностей. Спасибо Вам за труд!
    У меня к Вам есть вопрос по теме данного поста. Если подскажите буду очень благодарен. В общем суть моей проблемы - в результате работы стандартного цикла WP на главной странице блога выводятся анонсы не только записей но и страниц, хотя страницы мне там не нужны. Да и как я понял они и не должны туда были бы выводится без моего разрешения. Как мне запретить страницам (об авторе и.т.п) появлятся в ленте главной стр?

    • Миша22 января 2013 в 19:01 #

      Добрый вечер) спасибо)
      страницы сами по себе через стандартный цикл не выведутся, там видимо в теме где-то есть код, который их включает в цикл

  • Влад4 октября 2013 в 16:10 #

    Добрый день.
    А как вывести все статьи с конкретными тремя (в моем случае) метками:
    у меня три выпадающих списка select в форме

    мне нужно в файле vybor.php прописать чтоб вывелись все статьи с выбранными в этих выпадающих списках метками

  • Влад4 октября 2013 в 16:10 #

    вот форма

    <form action="vybor.php" method="GET" name="vyborka">

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • alex morozov: Ура, спасибо! Все-таки я разобрался ! Сделал:

  • alex morozov: Сделал Класс добаляется даже если поле пустое

  • Vladislav: Лучше бы посоветовали изящное решение имеющейся проблемы.

  • alex morozov: Не очень понял. Я добавляю метабокс через класс, почти как у вас. class Desc_Meta_Box { private $screens = array(...

  • Миша: Метод тыка хорош, но оснвоы нужно знать в любом случае. Рекомендую почитать это.