Как исключить дублирование постов при использовании нескольких циклов вывода на одной странице

Код, исключающий дублирование постов при использовании нескольких циклов. Если пост выводится в первом цикле, то в других он выводиться не будет.
👍 Научим создавать сайты на WordPress бесплатно за 19 уроков. Подробнее →

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

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

<!-- Первый цикл цикл -->
have_posts()) : $my_query->the_post();
    $do_not_duplicate = $post->ID; //запоминаем ID постов, выводимых в первом цикле
?>
    <!-- содержимое первого цикла -->


<!-- Второй цикл -->
ID == $do_not_duplicate ) continue; //пропускаем обработку повторяющихся постов
?>
   <!-- содержимое второго цикла -->

Обратите внимание на строчки с переменной $do_not_duplicate — они отвечают за то, чтобы посты в двух циклах не дублировались.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий