Вы пытаетесь избежать появления дубликатов постов с помощью нескольких циклов в WordPress?
Если вы выполняете несколько запросов WordPress для отображения разных наборов постов, то вы можете столкнуться с такой проблемой. Некоторые посты могут соответствовать более чем одному циклу и появляться дважды.
В этой статье мы покажем вам, как легко избежать отображения дубликатов постов с помощью нескольких циклов в WordPress.
Как дубликаты постов появляются в нескольких циклах WordPress
Вы можете использовать несколько циклов WordPress в шаблоне при создании пользовательской темы WordPress или пользовательского шаблона страницы.
Например, некоторые пользователи могут захотеть отобразить свои последние посты вместе с самыми популярными постами. Некоторые пользователи могут захотеть отображать недавние посты, за которыми следуют посты в разных категориях.
Теперь предположим, что пост, который вы недавно опубликовали, также соответствует критериям для нескольких циклов. WordPress будет отображать его снова, если вы не исключите его из списка.
Теперь, когда вы динамически генерируете посты для каждого цикла, вы не можете вручную предсказать, появится ли дубликат поста в цикле.
Учитывая это, давайте рассмотрим, как легко избежать дублирования постов при работе с несколькими циклами в WordPress.
Избежание дублирования постов в нескольких циклах WordPress
В этом учебнике мы покажем вам пример кода WordPress. Вы можете изменить его в соответствии со своими требованиями.
Во-первых, давайте воссоздадим проблему дублирования постов.
В следующем примере кода мы отображаем посты для двух категорий, не избегая дублирования постов.
-
‘; while ( $first_query->have_posts() ) < $first_query->the_post(); // отображение постов echo ‘
- ‘ echo the_post_thumbnail( array(50, 50) ); echo get_the_title(); echo »; > echo ‘
-
‘; while ( $second_query->have_posts() ) < $second_query->the_post(); echo ‘
- ‘; echo the_post_thumbnail( array(50, 50) ); echo get_the_title(); echo »; > echo ‘
Как вы можете видеть, этот код не проверяет наличие дубликатов постов ни в одном из запросов. Он будет продолжать и отображать дубликаты постов, если они будут найдены в обеих категориях:
Давайте исправим эту проблему.
Чтобы избежать дублирования постов, нам нужно временно сохранить данные о постах, отображаемых в первом цикле.
Получив эту информацию, мы просто изменим наш второй запрос, чтобы исключить повторное появление этих постов.
Вот пример кода, который позволяет избежать появления дубликатов постов во втором цикле.
-
‘; while ( $first_query->have_posts() ) < $first_query->the_post(); //Храним идентификаторы постов в массиве для повторного использования в дальнейшем $exclude[] = $post->ID; //отображаем посты echo ‘
- ‘ echo the_post_thumbnail( array(50, 50) ); echo get_the_title(); echo »; > echo ‘
-
‘; while ( $second_query->have_posts() ) < $second_query->the_post(); echo ‘
- ‘; echo the_post_thumbnail( array(50, 50) ); echo get_the_title(); echo »; > echo ‘
В приведенном выше коде мы сохранили идентификаторы постов в массиве $exclude . После этого мы добавили аргумент post__not_in во второй запрос, чтобы исключить посты, которые были показаны в первом цикле.
Вот и все, теперь вы можете зайти на свой сайт и увидеть, что дубликаты постов исчезли из второго цикла.
Надеемся, что эта статья помогла вам узнать, как избежать дублирования отображения постов с помощью нескольких циклов в WordPress. Вы также можете ознакомиться с нашей подробной шпаргалкой по разработке тем WordPress для получения дополнительных советов.
Источник: www.wpbeginner.com