Для вывода нескольких постов без дублирования в цикле WordPress можно использовать специальные параметры запроса. В цикле используется функция query_posts()
, которая позволяет определить параметры запроса в аргументах.
Если вы хотите получить несколько постов без дублирования, вы можете использовать параметр post__not_in
, который принимает массив идентификаторов постов, которые необходимо исключить из запроса.
Для начала, вам необходимо определить массив идентификаторов постов, которые вы уже вывели в цикле. Вы можете это сделать с помощью функции wp_get_post_categories()
, которая возвращает список категорий текущего поста. Затем, используя цикл foreach
, вы можете добавить эти идентификаторы в массив.
<?php $excluded_posts = array(); if (have_posts()) { while (have_posts()) { the_post(); $categories = wp_get_post_categories(get_the_ID()); foreach ($categories as $category) { $excluded_posts[] = $category; } } } ?>
Затем, вы можете использовать этот массив исключенных постов в параметре post__not_in
запроса query_posts()
. Например:
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 5, 'post__not_in' => $excluded_posts ); query_posts($args); if (have_posts()) { while (have_posts()) { the_post(); // вывод постов } } ?>
В этом примере мы использовали параметр post_type
, чтобы указать типы постов, которые мы хотим вывести (например, post
). Параметр posts_per_page
определяет, сколько постов должно быть выведено на странице.
Затем мы передаем массив excluded_posts
в параметр post__not_in
для исключения уже выведенных постов.
Наконец, внутри цикла while
вы можете использовать функции the_title()
, the_content()
или другие функции для вывода информации о каждом посте.
Надеюсь, эта информация помогла вам понять, как выводить несколько постов без дублирования в цикле WordPress.