W artykule:
Czy próbujesz uniknąć duplikatu postu pojawiającego się z wieloma pętlami w WordPress?
Jeśli korzystasz z wielu zapytań WordPress, aby wyświetlić różne zestawy postów, możesz natknąć się na ten problem. Niektóre posty mogą pasować do więcej niż jednej pętli i pojawiać się dwa razy.
W tym artykule pokażemy, jak łatwo uniknąć duplikatu wyświetlania postów z wieloma pętlami w WordPress.

Jak duplikaty postów pojawiają się w wielu pętlach WordPress
Możesz użyć wielu pętli WordPress w szablonie podczas tworzenia niestandardowego motywu WordPress lub niestandardowego szablonu strony.
Na przykład niektórzy użytkownicy mogą chcieć wyświetlić swoje ostatnie posty wraz z najpopularniejszymi postami. Niektórzy użytkownicy mogą chcieć wyświetlić najnowsze posty, a następnie posty w różnych kategoriach.
Załóżmy teraz, że niedawno opublikowany post również spełnia kryteria dla wielu pętli. WordPress wyświetli go ponownie, chyba że go wykluczysz.

Teraz, ponieważ dynamicznie generujesz posty dla każdej pętli, nie możesz ręcznie przewidzieć, czy duplikat postu pojawi się w pętli.
Mając to na uwadze, przyjrzyjmy się, jak łatwo uniknąć duplikatów postów w przypadku wielu pętli w WordPress.
Unikanie zduplikowanych postów w wielu pętlach WordPress
W tym samouczku pokażemy Ci przykładowy kod WordPress. Następnie możesz zmodyfikować go do własnych wymagań.
Najpierw odtworzmy problem zduplikowanych postów.
W poniższym przykładowym kodzie wyświetlamy posty dla dwóch kategorii bez unikania duplikatów postów.
<?php
/ * * * * * * Pierwsze Zapytanie *******/
$first_query = new WP_Query( array (
'category_name' = > 'news'
'posts_per_page' = > 3
) );
// Pętla
if ($first_query - >have_posts() ) {
echo ' <ul>';
while ($first_query - >have_posts() ) {
$first_query->the_post();
// wyświetl posty
echo ' < li>'
echo the_post_thumbnail(array (50, 50) );
echo get_the_title();
echo ' < / li>';
}
echo ' < /ul>';
} else {
// nie znaleziono postów
}
/ * Przywróć oryginalne dane postu */
wp_reset_postdata();
/ * * * * * * Drugie Zapytanie *******/
$second_query = new WP_Query( array (
'category_name' = > 'Podróże',
'posts_per_page' = > 3
) );
// Pętla
if ($second_query - >have_posts() ) {
echo ' <ul>';
while ($second_query - >have_posts() ) {
$second_query->the_post();
echo ' < li>';
echo the_post_thumbnail(array (50, 50) );
echo get_the_title();
echo ' < / li>';
}
echo ' < /ul>';
} else {
// nie znaleziono postów
}
/ * Przywróć oryginalne dane postu */
wp_reset_postdata();
?>
Jak widać, ten kod nie sprawdza duplikatów postów w żadnym z zapytań. Pojawi się i wyświetli zduplikowane posty, jeśli zostaną znalezione w obu kategoriach:

Rozwiążmy ten problem.
Aby uniknąć duplikatów postów, musimy tymczasowo przechowywać dane o postach wyświetlanych w pierwszej pętli.
Gdy już będziemy mieć te informacje, po prostu zmodyfikujemy nasze drugie zapytanie, aby wykluczyć te posty z ponownego pojawienia się.
Oto przykładowy kod, który zapobiega pojawianiu się duplikatów postów w drugiej pętli.
<?php
/ * * * * * * Pierwsze Zapytanie *******/
$first_query = new WP_Query( array (
'category_name' = > 'news'
'posts_per_page' = > 3
) );
// Pętla
if ($first_query - >have_posts() ) {
echo ' <ul>';
while ($first_query - >have_posts() ) {
$first_query->the_post();
// Przechowuj identyfikatory postów w tablicy, aby później je ponownie wykorzystać
$exclude [] = $post - > ID;
// wyświetl posty
echo ' < li>'
echo the_post_thumbnail(array (50, 50) );
echo get_the_title();
echo ' < / li>';
}
echo ' < /ul>';
} else {
// nie znaleziono postów
}
/ * Przywróć oryginalne dane postu */
wp_reset_postdata();
/ * * * * * * Drugie Zapytanie *******/
$second_query = new WP_Query( array (
'category_name' = > 'Podróże',
'post _ _ not _ in' = > $exclude, / / powiedz WordPressowi, aby wykluczył te posty
'posts_per_page' = > 3
) );
// Pętla
if ($second_query - >have_posts() ) {
echo ' <ul>';
while ($second_query - >have_posts() ) {
$second_query->the_post();
echo ' < li>';
echo the_post_thumbnail(array (50, 50) );
echo get_the_title();
echo ' < / li>';
}
echo ' < /ul>';
} else {
// nie znaleziono postów
}
/ * Przywróć oryginalne dane postu */
wp_reset_postdata();
?>
W powyższym kodzie przechowujemy identyfikatory Post w tablicy $ exclude. Następnie dodaliśmy post_ _ not _ in argument do naszego drugiego zapytania, aby wykluczyć posty, które były wyświetlane w pierwszej pętli.
To wszystko, co możesz teraz odwiedzić swoją stronę, aby zobaczyć zduplikowane posty znikające z drugiej pętli.

Mamy nadzieję, że ten artykuł pomógł Ci dowiedzieć się, jak uniknąć duplikatu wyświetlania postów z wieloma pętlami w WordPress. Możesz również zobaczyć naszą kompleksową ściągawkę do tworzenia motywów WordPress, aby uzyskać więcej wskazówek.
Jeśli podoba Ci się ten artykuł, zasubskrybuj nasz kanał YouTube dla samouczków wideo WordPress. Znajdziesz nas również na Twitterze i Facebooku.