Часто при организации множественных циклов WordPress возникает надобность пропустить пост или сделать какое-то действие, например, вывести рекламу между записями. Истину ни для кого не открою, но для новичков информация будет довольно полезна.

Множественный Loop в работе можно посмотреть в журнале ITpride на главной странице, на которой выводятся записи из пяти разных категорий. По сути, так можно легко организовать журнальную, а не блоговую тему.

Пример 1. Выводим несколько записей определённой категории в WordPress

Нужно создать новый запрос к базе с указанием фильтра категории и количеством выводимых записей. Для этого используем код ниже.

cat — указывает нам номер категории, его можно посмотреть тут:

Как посмотреть номер категории в WordPress

showposts — количество записей, которые мы будет выводить в цикле. Весь код такого цикла (без верстки): Данный код выведет на страницу три записи из категории номер девять.

Пример 2. Выводим рекламный блок между постами блога WordPress.

Дорабатываем наш цикл для вывода рекламного блока после первого поста. Для этого введем ещё одну переменную $ads. Кто не знаком с PHP или далек от программирования, будьте внимательны. В коде каждая точечка важна и переменные у нас начинаются со знака доллар.

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

Наш код будет таким:

<?php $recent = new WP_Query(«cat=9&showposts=3″); ?>
<?php if ($recent->have_posts()) : ?>
<?php $ads=0; while ($recent->have_posts()) : $recent->the_post();?>
<a href=»<?php the_permalink();?>» title=»<?php the_title(); ?>»> <?php the_title(); ?></a>
<?php wp_content(); ?>
//сейчас мы сравним переменную с 1 и если равно, то выводим «блок рекламы».
//если нет, то прибавляем ещё 1.
<?php if ($ads==1) echo ‘блок рекламы’; $ads=$ads+1;?>
<?php endwhile;?>
<?php endif;?>

Также прошу обратить внимание на «блок рекламы». В случае вывода блока скриптом то необходимо использовать обратную косую черту для вывода кавычек в код HTML. Например, для кода рекламы Яндекс.Директ в коде нужно внести такие правки:

<script type=\»text/javascript\»>

код

document.write(‘<sc’+’ript type=\»text/javascript\» src=\»http://an.yandex.ru/system/context.js\»></sc’+’ript>’);

Сам блок выводится командой ECHO.

Пример 3й. Пропускаем пост в множественном цикле WordPress

В этом случае мы тоже используем дополнительную переменную $dup (Вы можете назвать её у себя как удобно).

Задача простая — выводим главный пост дня из категории 9, а затем под ним в одной из  колонок, остальные новости категории 9, но пропустив первый пост.

Нам понадобится два цикла WordPress и в самом простом виде они будут такими:

<?php $recent = new WP_Query(«cat=9&showposts=1″); ?>
<?php if ($recent->have_posts()) : ?>
<?php while ($recent->have_posts()) : $recent->the_post(); $dub=$post->ID;?>
<a href=»<?php the_permalink() ?>» title=»<?php the_title(); ?>»><?php the_title(); ?></a>
<?php wp_content(); ?>
<?php endwhile;?>
<?php endif;?>
<?php rewind_posts(); ?>
<?php $recent = new WP_Query(«cat=9&showposts=8″); ?>
<?php if ($recent->have_posts()) : ?>
<?php while ($recent->have_posts()) : $recent->the_post();?>
<?php if($post->ID == $dup) continue;?>
<a href=»<?php the_permalink() ?>» title=»<?php the_title(); ?>»><?php the_title(); ?></a>
<?php wp_content(); ?>
<?php endwhile;?>
<?php endif;?>

Код практически ничем не отличается от стандартного. Мы вводим дополнительную переменную $dub, чтобы запомнить какой пост мы отобразили.

Этот цикл выведет нам 7 записей из категории номер 9 без первого поста, который мы вывели предыдущим циклом. Не забудьте поставить на единицу больше постов в запросе (мы же один пропустим).

Это далеко не все премудрости циклов WordPress, но такие небольшие хитрости добавят функциональности и гибкости Вашей теме. Циклы также можно использовать и в сайдбаре и футере 😉

Типограф сайта иногда портит код, поэтому скачайте все коды одним файлом

Сейчас другие читают: