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 att Duplicator Posts visas med flera loopar i WordPress

Försöker du fixa duplicerade posts som visas med flera slingor i WordPress?

Om du använder flera WordPress-sökningar för att visa olika uppsättningar av posts, kan du stöta på duplicerat content. Detta beror på att vissa posts kan matcha mer än en slinga och visas två gånger.

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 custom WordPress theme eller en custom page template kan du ibland behöva använda flera WordPress loops.

Du kanske till exempel vill visa de senaste inläggen bredvid de mest populära inläggen på din site. Genom att visa alla posts i varje kategori kan du också hjälpa läsarna att hitta intressant content.

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 website kommer du att se att de dubbla posterna 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 duplicerad displayed av post med flera loopar i WordPress. Du kanske också vill se vår guide om hur man väljer den bästa webbdesignprogramvaran eller vårt expertval av de bästa drag and drop WordPress page builders.

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

16 kommentarerLämna ett svar

  1. Syed Balkhi

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Nick J

    Is there a plugin that does this?

  3. 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.

  4. 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?

  5. Joe

    Just what I was looking for – thank you!

  6. Guilherme Alves

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

  7. Julie

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

  8. 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?

  9. 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.

  10. agus

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

    please
    #thanks

  11. Gabriel

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

  12. Greg

    @sergeyvlasov – Thanks that worked for me

    tho i changed

    $do_nit_duplicate to $do_not_duplicate

    ;)

  13. 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.