Bei zwei Loops, wie doppelte Posts vermeiden?

  • moin!
    ich machs kurz:

    ich habe drei loops auf meiner startseite:

    1. Hauptartikel:

    PHP
    <?php $my_query = new WP_Query('posts_per_page=1'); ?>
    
    
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
                <div id="bild"><a href="<?php the_permalink()  ?>"><?php the_post_thumbnail( 'thumb_big' ); ?>  </a></div>
            <h1><a href="<?php the_permalink() ?>"  rel="bookmark" title="Permanent Link to <?php the_title_attribute();  ?>"><?php the_title(); ?></a></h1>
                <p><?php echo excerpt(40); ?>
                <?php endwhile; ?>


    2. Alle Folgeartikel:


    3. Kategorie-Teaser (der letzte artikel einer kategorie)


    ..das funktioniert auch alles so wunderbar!
    nun möchte ich allerdings, dass der kategorie-teaser keine doppelten posts anzeigt! somit: alle artikel, die in der loopschleife 1 und 2 angezeigt werden, dürfen nicht in loop 3 angezeigt werden!

    ich bin am verzweifeln, hab schon sämtliche varianten ausprobiert (z.b. "$do_not_duplicate"-Befehl), allerdings immer mit anderen loop-varianten. hat jemand ne idee, wie ich das ganze [size=12]exakt mit meinen jetztigen loops[/SIZE] anwenden kann?

    für hilfe wäre ich mehr als dankbar!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Mal ein kleines Beispiel.
    Vor dem ersten Loop setzt du $do_not_duplicate

    PHP
    <?php $do_not_duplicate = array(); ?>

    Dann kommt der Loop

    PHP
    <?php $do_not_duplicate = array(); 
    
    
    $my_query = new WP_Query('posts_per_page=1');
    while ($my_query->have_posts()) : $my_query->the_post(); ?>


    So, im Loop füllst du $do_not_duplicate mit den Post-IDs

    Jetzt ist der erste Loop fertig.

    Im 2. Loop schließt du die vom 1. Loop gesammelten Post-IDs jetzt einfach über post__not_in aus. Dafür musst du die Parameterübergabe per Array verwenden:

    PHP
    array(
          'post__not_in' => $do_not_duplicate, 
          'numberposts' => 1, 
          'cat' => '54'
          )

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Zitat

    Im 2. Loop schließt du die vom 1. Loop gesammelten Post-IDs jetzt einfach über post__not_in aus. Dafür musst du die Parameterübergabe per Array verwenden:

    PHP
    array(
          'post__not_in' => $do_not_duplicate, 
          'numberposts' => 1, 
          'cat' => '54'
          )

    erstmal: vielen dank, ich probiers gleich ma aus! ich hab aber noch ne frage: packe ich diesen array-befehl so jeweils vor den zweiten loop?

    ..und noch viel wichtiger: was passiert mit dem loop, der sich nicht auf eine bestimmte anzahl von posts beschränkt sondern alle posts beinhaltet (mmit blätterfuntkion)... geht das überhaupt? kann man es so einstellen, dass immer die sichtbaren (z.b. 5) artikel nicht doppelt erscheinen?

    gruss

  • packe ich diesen array-befehl so jeweils vor den zweiten loop?

    packst du in query_posts() oder in get_posts()

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!