Как выводить в цикле wordpress несколько постов без дублирования?

Для вывода нескольких постов без дублирования в цикле 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.