Vertrauenswürdige WordPress-Tutorials, wenn Sie sie am dringendsten benötigen.
Anfängerleitfaden für WordPress
WPB Cup
25 Millionen+
Websites, die unsere Plugins verwenden
16+
Jahre WordPress-Erfahrung
3000+
WordPress-Tutorials von Experten

So vermeiden Sie die doppelte Anzeige von Beiträgen mit mehreren Schleifen in WordPress

Wenn Sie mehrere WordPress-Abfragen verwenden, um verschiedene Sätze von Beiträgen anzuzeigen, können Sie auf doppelte Inhalte stoßen. Dies liegt daran, dass einige Beiträge möglicherweise mehr als einer Schleife entsprechen und zweimal angezeigt werden.

WordPress verfügt nicht über eine integrierte Option, um doppelte Beiträge in mehreren Schleifen zu vermeiden. In unseren über 15 Jahren Erfahrung mit verschiedenen WordPress-Websites haben wir jedoch gelernt, wie dieses Problem vermieden werden kann. Daher haben wir einen benutzerdefinierten Code-Snippet erstellt, den Sie zu Ihrer Website hinzufügen können, um zu vermeiden, dass doppelte Beiträge in verschiedenen Schleifen angezeigt werden.

In diesem Artikel zeigen wir Ihnen, wie Sie doppelte Beitragsanzeigen mit mehreren Schleifen in WordPress einfach vermeiden können.

Vermeidung doppelter Beiträge bei der Arbeit mit mehreren WordPress-Schleifen

Wie doppelte Beiträge in mehreren WordPress-Schleifen erscheinen

Beim Erstellen eines benutzerdefinierten WordPress-Themes oder einer benutzerdefinierten Seiten-Vorlage müssen Sie möglicherweise mehrere WordPress-Schleifen verwenden.

Zum Beispiel möchten Sie vielleicht Ihre neuesten Beiträge neben den beliebtesten Beiträgen Ihrer Website anzeigen. Indem Sie alle Beiträge jeder Kategorie anzeigen, können Sie den Lesern auch helfen, interessante Inhalte zu finden.

In all diesen Beispielen kann ein einzelner Beitrag die Kriterien für mehrere Schleifen erfüllen. Wenn dies geschieht, zeigt WordPress doppelte Inhalte an.

Diese doppelten Inhalte können Ihre Website unordentlich und unprofessionell aussehen lassen. Sie nehmen auch Bildschirmplatz ein, ohne einen Mehrwert zu bieten.

Da Sie Beiträge für jede Schleife dynamisch generieren, können Sie nicht manuell vorhersagen, ob ein doppelter Beitrag in mehreren Schleifen erscheinen wird.

Mit diesen Worten wollen wir uns eine einfache Möglichkeit ansehen, doppelte Beiträge zu vermeiden, wenn Sie mit mehreren Schleifen in WordPress arbeiten.

Vermeidung von doppelten Beiträgen in mehreren WordPress-Schleifen

In diesem Leitfaden zeigen wir Ihnen einige Beispiel-WordPress-Codes, die den Fehler mit doppelten Beiträgen verursachen, und teilen dann einen Code-Schnipsel, der das Problem behebt.

Beim Erstellen eines WordPress-Child-Themes oder einer benutzerdefinierten Vorlage kann Ihr Code völlig anders sein. Sie können jedoch unseren Code-Schnipsel als Ausgangspunkt verwenden und ihn dann an Ihre eigene Website anpassen.

Zuerst erstellen wir ein Problem mit doppelten Beiträgen. Im folgenden Beispielcode zeigen wir alle Beiträge der Kategorie 'Reisen' und alle Beiträge der Kategorie 'Nachrichten' an, ohne doppelte Beiträge zu vermeiden:

/******  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();
?>

Wie Sie sehen können, prüft dieser Code nicht auf doppelte Beiträge in einer der beiden Abfragen.

Wenn ein Beitrag sowohl zur Kategorie 'Nachrichten' als auch zur Kategorie 'Reisen' gehört, wird er zweimal angezeigt, wie Sie im folgenden Bild sehen können.

So vermeiden Sie die Anzeige doppelter Beiträge mit mehreren Schleifen in WordPress

Lassen Sie uns dieses Problem beheben.

Um doppelte Beiträge in Ihrem WordPress-Blog zu vermeiden, müssen Sie die Daten aller in der ersten Schleife angezeigten Beiträge vorübergehend speichern.

Sobald Sie diese Informationen haben, können Sie die zweite Abfrage ändern, um zu verhindern, dass doppelte Beiträge in der zweiten Schleife erscheinen:

/******  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();
?>

Im obigen Code speichern wir Post-IDs in einem Array namens $exclude. Danach fügen wir das Argument post__not_in zur zweiten Abfrage hinzu, wodurch Beiträge ausgeschlossen werden, die in der ersten Schleife angezeigt wurden.

Wenn Sie nicht vertraut damit sind, Code-Snippets zu Ihrer Website hinzuzufügen, dann ist ein einfacherer Weg die Verwendung von WPCode. Es ist das beste Code-Snippet-Plugin für WordPress, das Ihnen hilft, benutzerdefinierten Code hinzuzufügen, ohne Ihre Website zu beschädigen.

Zuerst müssen Sie das WPCode-Plugin installieren und aktivieren. Wenn Sie Hilfe benötigen, lesen Sie bitte unseren Leitfaden zur Installation eines WordPress-Plugins.

Nach der Aktivierung können Sie im WordPress-Dashboard zu Code Snippets + Snippet hinzufügen gehen und dann auf die Option „Eigene benutzerdefinierte Codes hinzufügen (Neues Snippet)“ klicken.

Fügen Sie einen neuen benutzerdefinierten Code-Snippet in WPCode hinzu

Danach können Sie den benutzerdefinierten Code in den Bereich Code-Vorschau einfügen und oben einen Titel eingeben.

Sie müssen auch den 'Code-Typ' als PHP-Snippet auswählen, indem Sie auf das Dropdown-Menü klicken.

Benutzerdefinierten Code-Snippet eingeben

Nach der Eingabe des Codes scrollen Sie einfach nach unten, um den Abschnitt Einfügen auszuwählen.

Hier können Sie die Standardeinstellung 'Automatisch einfügen' verwenden und das Plugin den Code automatisch zu Ihrer Website hinzufügen lassen.

Einfügungsmethoden für Snippets in WPCode

Wenn Sie fertig sind, speichern Sie einfach den Ausschnitt und aktivieren Sie ihn.

Weitere Details finden Sie in unserem Leitfaden zum einfachen Hinzufügen von benutzerdefiniertem Code in WordPress.

Wenn Sie nun Ihre WordPress-Website besuchen, werden Sie sehen, dass die doppelten Beiträge verschwunden sind.

Entfernen doppelter Beiträge bei Verwendung mehrerer Beiträge in WordPress

Wir hoffen, dieser Artikel hat Ihnen geholfen zu lernen, wie Sie doppelte Beitragsanzeigen mit mehreren Schleifen in WordPress vermeiden können. Möglicherweise möchten Sie auch unseren Leitfaden lesen, wie Sie eine beliebige Anzahl von Beiträgen in einer WordPress-Schleife anzeigen und wie Sie Sticky Posts in WordPress erstellen.

Wenn Ihnen dieser Artikel gefallen hat, abonnieren Sie bitte unseren YouTube-Kanal für WordPress-Video-Tutorials. Sie finden uns auch auf Twitter und Facebook.

Offenlegung: Unsere Inhalte werden von unseren Lesern unterstützt. Das bedeutet, wenn Sie auf einige unserer Links klicken, können wir eine Provision verdienen. Sehen Sie wie WPBeginner finanziert wird, warum das wichtig ist und wie Sie uns unterstützen können. Hier ist unser Redaktionsprozess.

Das ultimative WordPress-Toolkit

Erhalten Sie KOSTENLOSEN Zugang zu unserem Toolkit – eine Sammlung von WordPress-bezogenen Produkten und Ressourcen, die jeder Profi haben sollte!

Leserinteraktionen

15 CommentsLeave a Reply

  1. Könnte mir jemand sagen, wie das geht? Ich bin wirklich neu hier und brauche Hilfe. Bitte geben Sie mir ein klares Beispiel mit der Beitrags-ID, wie ich sie speichern kann? Nehmen wir an, meine ist 1527.

  2. Ich verwende 2 Schleifen vor Schleifen einer bestimmten Kategorie, in denen ich Duplikate vermeiden möchte. Wie speichere ich also die IDs in dem Array aus den ersten beiden Schleifen?

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

  4. Diese Methode funktioniert einwandfrei, bis beide Schleifen in einer Datei liegen.
    Aber wenn ich die erste Schleife in die header.php und die andere in die index.php einfüge,
    gibt in_array($post->ID, $do_nit_duplicate) null zurück.
    Was kann ich tun?

  5. Guten Tag allerseits,

    wird das für mein aktuelles Problem mit der doppelten Anzeige von Beiträgen auf der Website funktionieren? Es wird buchstäblich eine Kopie unter den Beiträgen und die Schaltfläche 1, 2, -> angezeigt…

    die Seite ist Ich habe Plugins deaktiviert und wieder aktiviert, ich werde buchstäblich verrückt.

  6. @sergeyvlasov – Danke, das hat bei mir funktioniert

    obwohl ich geändert habe

    $do_nit_duplicate zu $do_not_duplicate

    ;)

  7. Ich denke, es gibt einen Fehler in diesem Algorithmus. Er kann nicht mehr als eine (1) Duplizierung erkennen. Die magische Zeile würde also so aussehen:
     
    $do_not_duplicate[] = $post->ID
     
    und dann verwendet werden als
     
    if(in_array($post->ID, $do_nit_duplicate)) continue;

Hinterlasse eine Antwort

Vielen Dank, dass Sie einen Kommentar hinterlassen. Bitte beachten Sie, dass alle Kommentare gemäß unserer Kommentarrichtlinie moderiert werden und Ihre E-Mail-Adresse NICHT veröffentlicht wird. Bitte verwenden Sie KEINE Schlüsselwörter im Namensfeld. Führen wir ein persönliches und bedeutungsvolles Gespräch.