Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Så här undviker du visning av Duplicator inlägg med flera loopar i WordPress

Om du använder flera WordPress-sökningar för att visa olika inställningar av inlägg, kan du stöta på duplicerat innehåll. Detta beror på att vissa inlägg kan matcha mer än en slinga och visas två gånger.

WordPress har inte något inbyggt alternativ för att undvika dubbla inlägg i flera loopar. Men under våra 15+ års erfarenhet av att hantera olika webbplatser i WordPress har vi lärt oss hur man undviker det här problemet. Så vi har skapat ett anpassat fragment kodu som du kan lägga till på din webbplats och undvika att duplicerade inlägg visas i olika loopar.

I den här artikeln kommer vi att visa dig hur du enkelt kan undvika att duplicerade post visas med flera loopar i WordPress.

Avoding duplicate posts when working with multiple WordPress loops

Så här visas Duplicator-poster i flera WordPress-slingor

När du skapar ett anpassat WordPress-tema eller en mall för en anpassad sida kan du ibland behöva använda flera WordPress-slingor.

Du kanske till exempel vill visa de senaste inläggen bredvid webbplatsens mest populära inlägg. Genom att visa alla inlägg i varje kategori kan du också hjälpa läsarna att hitta intressant innehåll.

I alla dessa exempel kan ett enskilt inlägg matcha kriterierna för flera slingor. När detta händer kommer WordPress att visa duplicerat content.

Detta duplicerade content kan få din site att se rörig och oprofessionell ut. Det tar också upp utrymme på skärmen utan att tillföra värde.

Eftersom du dynamiskt genererar posts för varje loop kan du inte manuellt förutsäga om ett duplicerat post kommer att visas i flera loopar.

Med detta sagt, låt oss titta på ett enkelt sätt att undvika duplicerade posts när vi hanterar flera loopar i WordPress.

Undvik duplicerade posts i flera WordPress-slingor

I den här guiden kommer vi att visa dig några exempel på WordPress-kod som orsakar duplicate post error och sedan dela ett code snippet som fixar problemet.

När du skapar ett WordPress barntema eller en custom template kan din kod vara helt annorlunda. Du kan dock använda vårt code snippet som utgångspunkt och sedan ändra det så att det passar din egen website.

Låt oss först skapa en duplicate post issue. I följande exempelkod visar vi alla posterna i kategorin ”travel” och alla posterna i kategorin ”news” utan att undvika dubbla postningar:

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3 
));
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'posts_per_page'  =>  3
 
) );
 
// The Loop
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 {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Som du kan se kontrollerar den här koden inte för duplicerade poster i någon av sökningarna.

Om ett post tillhör både kategorin ”news” och ”travel” kommer det att visas två gånger, som du kan se i följande image.

How to avoid duplicate post display with multiple loops in WordPress

Låt oss fixa den här issue.

Order: För att undvika dubbla inlägg på din blogg i WordPress måste du tillfälligt lagra data om alla de posts som visas i den första loopen.

När du har den informationen kan du ändra den andra sökningen för att stoppa duplicerade poster från att visas i den andra slingan:

/******  The First Query *******/
 
$first_query = new WP_Query(  array (
'category_name' => 'news',
'posts_per_page'  =>  3
) );
  
// The Loop
if ( $first_query->have_posts() ) {
    echo '<ul>';
    while ( $first_query->have_posts() ) {
        $first_query->the_post();
         
// Store Post IDs in an Array to reuse later
$exclude[] = $post->ID; 
 
//display posts
echo '<li>';
echo the_post_thumbnail( array(50, 50) );
echo get_the_title(); 
echo '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
 
 
/******  The Second Query *******/
$second_query = new WP_Query(  array (
'category_name' => 'travel',
'post__not_in'  =>  $exclude, // Tell WordPress to Exclude these posts
'posts_per_page'  =>  3
 
) );
 
// The Loop
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 {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

I koden ovan lagrar vi ID:n för posterna i en array som heter $exclude. Därefter lägger vi till argumentet post__not_in i den andra sökningen, vilket kommer att utesluta posts som visades i den första loopen.

Om du inte är bekant med att lägga till code snippets till din site, så är ett enklare sätt att använda WPCode. Det är det bästa code snippet plugin för WordPress som hjälper dig att add custom code utan att riskera att bryta din site.

Först måste du installera och aktivera pluginet WPCode. Om du behöver hjälp, vänligen se vår guide om hur du installerar ett plugin för WordPress.

Efter aktivering kan du gå till Code Snippets + Add Snippet från WordPress dashboard och sedan klicka på alternativet ”Add Your Custom Code (New Snippet)”.

Add a new custom code snippet in WPCode

Efter det kan du klistra in den anpassade koden i Code Preview area och ange en titel högst upp.

Du måste också välja ”Code Type” som PHP Snippet genom att clicka på dropdown-menyn.

Enter custom code snippet

När du har enter koden rullar du bara nedåt för att select the Section Infogaren.

Här kan du använda standardinställningen ”Auto Insert” och låta pluginet automatiskt lägga till koden på din site.

Insertion methods for snippets in WPCode

När du är klar sparar du bara snippet och aktiverar det.

För mer details, vänligen se vår guide om hur du lägger till custom code i WordPress.

Om du nu besöker din WordPress webbplats kommer du att se att de dubbla inläggen har försvunnit.

Removing duplicate posts when using multiple posts in WordPress

Vi hoppas att den här artikeln hjälpte dig att lära dig hur du undviker visning av dubbla inlägg med flera loopar i WordPress. Du kanske också vill se vår przewodnik om hur du inaktiverar valfritt antal inlägg i WordPress-loopen och hur du gör (fast)klistrade inlägg i WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Avslöjande: Vårt innehåll stöds av våra läsare. Det innebär att om du klickar på några av våra länkar, kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt, och hur du kan stödja oss. Här är vår editoriala process.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Den ultimata WordPress-verktygslådan

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som varje professionell användare bör ha!

Reader Interactions

15 kommentarerLämna ett svar

  1. Nick J

    Is there a plugin that does this?

  2. Satriyo

    Could someone tell me how to do this? I’m really new to this and need a help, please give me a clear example with the post ID, how to store it? Let’s say, mine is 1527.

  3. Gaurav

    I’m running 2 loops before loops of a specific category in which I would like to avoid duplicates. So how do a store ID’s in the array from first two loops?

  4. Joe

    Just what I was looking for – thank you!

  5. Guilherme Alves

    Thank you soo much :))) This helps me alot!
    Save my day <3

  6. Julie

    AWESOME!! Thank you so much! And thank you SERGEYVLASOV for that last comment– Worked like a charm for my multiple loops. Hooray!! :)

  7. Pirooz

    This method just works fine until both of 2 loops located in one file.
    but when I put the first loop in the header.php and another one in the index.php,
    in_array($post->ID, $do_nit_duplicate) returns null.
    what can I do?

  8. warren

    Good afternoon all,

    will this work for my current issue with double display of posts on site? it literally displays a copy under the posts and the 1, 2, -> button…

    the site is I have deactivated re-activated plugins i am literally going nuts.

  9. agus

    can you help me?
    I have proble with duplicate category in my site

    please
    #thanks

  10. Gabriel

    Before iterating over the default loop shouldn’t we use wp_reset_postdata(); ?

  11. Greg

    @sergeyvlasov – Thanks that worked for me

    tho i changed

    $do_nit_duplicate to $do_not_duplicate

    ;)

  12. sergeyvlasov

    I think there is a flaw in this algorithm. It can spot no more than 1(one) duplication. So the magic line would look like
     
    $do_not_duplicate[] = $post->ID
     
    and then used as
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt våra policy för kommentarer, och din e-postadress kommer INTE att publiceras. Vänligen använd INTE nyckelord i namnfältet. Låt oss ha en personlig och meningsfull konversation.