Pålitliga WordPress-handledningar, när du behöver dem som mest.
Nybörjarguide till WordPress
WPB Cup
25 miljoner+
Webbplatser som använder våra plugins
16+
År av WordPress-erfarenhet
3000+
WordPress-handledningar
av experter

Hur man undviker dubbel visning av inlägg med flera loopar i WordPress

Om du använder flera WordPress-frågor för att visa olika uppsättningar av inlägg, kan du stöta på dubblettinnehåll. Detta beror på att vissa inlägg kan matcha mer än en loop och visas två gånger.

WordPress har inte ett inbyggt alternativ för att undvika dubbletter av inlägg i flera loopar. Men under våra 15+ års erfarenhet av att hantera olika WordPress-webbplatser har vi lärt oss hur man undviker detta problem. Därför har vi skapat ett anpassat kodavsnitt som du kan lägga till på din webbplats och undvika att dubbletter av inlägg visas i olika loopar.

I den här artikeln visar vi hur du enkelt undviker att dubbla inläggsvisningar med flera loopar i WordPress.

Undvika dubbla inlägg när du arbetar med flera WordPress-loopar

Hur dubblettinlägg visas i flera WordPress-loopar

När du skapar ett anpassat WordPress-tema eller en anpassad sidmall, kan du ibland behöva använda flera WordPress-loopar.

Till exempel kanske du vill visa dina senaste inlägg bredvid din webbplats 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 loopar. När detta händer kommer WordPress att visa dubblettinnehåll.

Detta dubbla innehåll kan få din webbplats att se rörig och oprofessionell ut. Det tar också upp skärmutrymme utan att tillföra något värde.

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

Med det sagt, låt oss titta på ett enkelt sätt att undvika dubblettinlägg när du hanterar flera loopar i WordPress.

Undvika dubbletter av inlägg i flera WordPress-loopar

För den här guiden kommer vi att visa dig några exempel på WordPress-kod som orsakar felet med dubblettinlägg och sedan dela ett kodavsnitt som löser problemet.

När du skapar ett WordPress-underordnat tema eller en anpassad mall, kan din kod skilja sig helt. Du kan dock använda vårt kodavsnitt som en utgångspunkt och sedan modifiera det för att passa din egen webbplats.

Låt oss först skapa ett problem med dubbletter av inlägg. I följande exempelkod visar vi alla inlägg i kategorin 'resor' och alla inlägg i kategorin 'nyheter' utan att undvika dubbletter av inlägg:

/******  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 denna kod inte dubbletter av inlägg i någon fråga.

Om ett inlägg tillhör både kategorin 'nyheter' och 'resor', kommer det att visas två gånger, som du kan se i följande bild.

Hur man undviker dubbel visning av inlägg med flera loopar i WordPress

Låt oss åtgärda detta problem.

För att undvika dubblettinlägg på din WordPress-blogg, behöver du tillfälligt lagra data om alla inlägg som visas i den första loopen.

När du har den informationen kan du ändra den andra frågan för att stoppa dubblettinlägg från att visas i den andra loopen:

/******  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 ovanstående kod lagrar vi inläggs-ID:n i en array som heter $exclude. Därefter lägger vi till argumentet post__not_in till den andra frågan, vilket kommer att utesluta inlägg som visades i den första loopen.

Om du inte är bekant med att lägga till kodavsnitt på din webbplats, är ett enklare sätt att använda WPCode. Det är det bästa pluginet för kodavsnitt för WordPress som hjälper dig att lägga till anpassad kod utan att riskera att bryta din webbplats.

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

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

Lägg till ett nytt anpassat kodavsnitt i WPCode

Därefter kan du klistra in den anpassade koden i området Kodförhandsgranskning och ange en titel högst upp.

Du måste också välja 'Kodtyp' som PHP-kodavsnitt genom att klicka på rullgardinsmenyn.

Ange anpassat kodavsnitt

Efter att ha angett koden, scrolla helt enkelt ner för att välja avsnittet Infogning.

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

Insättningsmetoder för kodavsnitt i WPCode

När du är klar, spara helt enkelt kodavsnittet och aktivera det.

För mer information, se vår guide om hur man lägger till anpassad kod i WordPress.

Nu, om du besöker din WordPress-webbplats, kommer du att se att de dubbla inläggen har försvunnit.

Ta bort dubblettinlägg när du använder flera inlägg i WordPress

Vi hoppas att den här artikeln hjälpte dig att lära dig hur du undviker att visa dubbletter av inlägg med flera loopar i WordPress. Du kanske också vill se vår guide om hur man visar ett valfritt antal inlägg i en WordPress-loop och hur man gör klistriga inlägg i WordPress.

Om du gillade den här artikeln, prenumerera då på vår YouTube-kanal för WordPress-videoguider. Du kan också hitta oss på Twitter och Facebook.

Upplysning: Vårt innehåll stöds av läsarna. 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 redaktionella process.

Det ultimata WordPress-verktyget

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som alla proffs bör ha!

Läsarnas interaktioner

15 CommentsLeave a Reply

  1. Kan någon berätta hur jag gör detta? Jag är verkligen ny på detta och behöver hjälp, ge mig ett tydligt exempel med inläggs-ID, hur lagrar jag det? Låt oss säga att mitt är 1527.

  2. Jag kör 2 loopar före loopar för en specifik kategori där jag skulle vilja undvika dubbletter. Så hur lagrar jag ID:n i arrayen från de två första looparna?

  3. Tack så jättemycket :))) Det här hjälper mig jättemycket!
    Du räddade min dag <3

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

  5. Den här metoden fungerar bara bra tills båda av 2 loopar finns i en fil.
    men när jag placerar den första loopen i header.php och en annan i index.php,
    returnerar in_array($post->ID, $do_nit_duplicate) null.
    Vad kan jag göra?

  6. God eftermiddag allihop,

    kommer detta att fungera för mitt nuvarande problem med dubbel visning av inlägg på webbplatsen? det visas bokstavligen en kopia under inläggen och 1, 2, -> knappen...

    webbplatsen är Jag har inaktiverat och återaktiverat plugins, jag håller på att bli galen.

  7. @sergeyvlasov – Tack, det fungerade för mig

    fastän jag ändrade

    $do_nit_duplicate till $do_not_duplicate

    ;)

  8. Jag tror att det finns en brist i den här algoritmen. Den kan bara upptäcka 1 (en) dubblett. Så den magiska raden skulle se ut så här:
     
    $do_not_duplicate[] = $post->ID
     
    och sedan användas som:
     
    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år kommentarspolicy, och din e-postadress kommer INTE att publiceras. Använd INTE nyckelord i namn fältet. Låt oss ha en personlig och meningsfull konversation.