Апр
27
35

WordPress цикл (loop) – выводим сообщения блога

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

Итак, wordpress цикл (или loop) используется для отображения каждого из постов вашего блога. С помощью цикла система вордпресс обрабатывает каждый пост и отображает его на текущей страницы, исходя из тех или иных заданных критериев. Любой код HTML или PHP, который указан в цикле, будет применен для всех отображаемых постов. При этом для соответствующих функций в кодексе четко указывается, что мол она может быть использована только в цикле wordpress. Так, например, с помощью цикла на главной странице блога для каждой записи задается оформление (обработка) ее заголовка, категорий и т.п. Таким образом, вы указываете форматирование единожды, а оно применяется ко всем статьям.

Если вы откроете главный файл шаблона index.php, то сможете найти в коде строки, отвечающие за цикл wordpress. Начинается он здесь:

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

А заканчивается чаще всего таким кодом:

<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

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

Допустим, что у нас есть задача сделать отдельное оформление для категории постов под номером 3 (цифру ищите в админке блога разделе категорий при наведении на ее заголовок). Для вывода используем все тот же цикл Loop, а для проверки принадлежности к той или иной категории функцию in_category(). Итого получаем:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if ( in_category('3') ) { ?>
          <div class="post-cat-three">
<?php } else { ?>
          <div class="post">
<?php } ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
…
<?php endwhile; else: ?>
 <p>Sorry, no posts matched your criteria.</p>
 <?php endif; ?>

Здесь в центре кода есть условие – если пост принадлежит категории под номером 3, то для его оформления применится стиль post-cat-three, в противном случае обычный. Учитывая тот вариант, что код проверки находится в цикле wordpress, мы производим автоматически проверку для всех постов блога.

Исключаем посты из цикла для определенной категории

Собственно теперь рассмотрим пример, с которого все и началось. С помощью функции query_posts мы можем изменить параметры цикла wordpress для вывода постов блога на главной странице. Например, мы хотим исключить из вывода  категории 3 и 8, тогда используем код:

<?php query_posts($query_string . '&cat=-3,-8'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
 <div class="entry"><?php the_content(); ?></div>
 <p class="postmetadata">Posted in <?php the_category(', '); ?></p>
</div>
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>

Внимание! При этом вы должны убедиться, что используете отдельный файл шаблона для вывода архивов категорий и др., то есть поищите у себя archive.php. В противном случае исключение категорий 3 и 8 будет применено и к архивам, чего мы делать не планировали.

В кодексе для этого есть небольшое решение с помощью функции is_home():

<?php if ( is_home() ) {
query_posts($query_string . '&cat=3,-8');
}
?>

Пока что на этом все, другие «истории» из кодекс рассмотрю в следующих статьях.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 4, средний балл: 6,50 из 7)
Загрузка...

категория Категории: Возможности; Начинающим;
теги Теги: , , , , .

комментариев 35 к статье “WordPress цикл (loop) – выводим сообщения блога”

  • Tod   18.04.2012

    Дарья, судя по шаблону тег more работает для записей (постов), а не страниц в вашем блоге. Я бы создал рубрику «статьи» как это есть с новостями и добавлял бы заметки туда. Вполне вероятно, что more сразу заработает. По теме, кстати, еще была одна статья — ссылка читать далее в wordpress – тег more.

  • Hert   09.10.2012

    Есть цикл: while (have_posts()) : the_post();
    Но сообщения в моей теме выводятся последовательно, то есть один пост по ширине всей страницы. Иными словами, вот пример:
    Пост 1
    Пост 2
    Пост 3
    Пост 4
    Пост 5
    Пост 6
    А я хочу выводить их так, чтобы на одной ширине страницы располагалось сразу три поста, то есть:
    Пост 1 Пост 2 Пост 3
    Пост 4 Пост 5 Пост 6
    И так далее, в таком порядке. Как это сделать?

  • Tod   09.10.2012

    Hert, это все делается в стилях CSS — посты выводятся в блок DIV для которого задается класс со свойством float: left — и тогда все тексты буду отображаться друг за другом, а когда ширина строки закончится пойдут внизу так как вам и нужно. Только кроме выравнивания нужно будет задать для блока ширину width. В общем, можно почитать по это в каком-то из учебников по CSS или скачать готовую тему с подобным расположением и взять стили оттуда.

  • Галина   23.07.2013

    Есть проблема: самостоятельно пытаюсь сделать сайт в wordpress. Шаблон сделала в Artisteеr 3.1, экспортировала в wordpress. Не смотря на то, что еще в Artisteеr убрала все боковые колонки, при переносе на wordpress проявились и не убираются Архив и bookmarks. Помогите их убрать.
    Сразу скажу, я в программировании ОООООООООООООО полный, язык программирования не понимаю, читала ваши статьи ничего не поняла, очень умный язык, не для меня. Обычным языком типа, что куда нажать, удалить если можно подскажите как это сделать. Как виджет, некоторые советуют, не перетаскивается вниз. А вот виджет «Текст», перенесенный в сайтбар вообще не отразился Мучаюсь уже не одну неделю, поэтому осмелилась вам написать. Ответьте на почту пожалуйста. С уважением Галина.

  • Tod   23.07.2013

    Галина, советую сменит шаблон — это самый простой выход. Я сталкивался с темами сделанными в Artisteеr и это ужас, где что-то понять достаточно сложно. Поищите обычный шаблон, который бы максимально подходил вашему сайту (если это возможно).

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

(предыдущая статья)

Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Последние посты
Лучшее в категории
Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости