Multiple Loops, Query und Post Count

  • Ich krieg es nicht gebacken. Die Dokumentation gab mir zwar einige Hinweise, doch es läuft nicht wie es soll.

    So soll es:
    Man nehme 4 Kategorien (meinung, analyse, externa und feature).
    Nun soll die index.php insgesamt 15 Beiträge anzeigen und diese folgendermaßen anordnen (siehe Anhang).
    1. Neuester Beitrag der zwei Kategorien Meinung&&Feature
    2.-5. Neueste Beiträge der Kategorie Meinung
    6. Neuester Beitrag der zwei Kategorien Analyse&&Feature
    7.-10. Neueste Beiträge der Kategorie Analyse
    11. Neuester Beitrag der zwei Kategorien Externa&&Feature
    12.-15. Neueste Beiträge der Kategorie Externa

    So ist es:
    Mein Versuch, der offensichtlich nicht funktioniert, sieht so aus:

    Das Problem ist, dass dieser gesamte Code-Kalabaster als EIN Post interpretiert wird. Die Folge (ebenfalls dem Anhang zu entnehmen, siehe Scrollbalken rechts) ist, alle 15 Beträge insgesamt auch 15 durchgeschleift werden.

    Problem verstanden? Lösung parat??

    Ich wäre sehr sehr 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

  • Du könntest ja mal versuchen für jede Abfrage einen new WP_query() zu machen: http://codex.wordpress.org/The_Loop#Multiple_Loops

    usw. ... Prinzip verstanden?

    [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]

  • Und was ich auch noch gerade sehe ist, dass die Posts dann manchmal doppelt erscheinen. Es sollte also sogar so sein

    1. Neuester Beitrag der zwei Kategorien Meinung&&Feature
    2.-5. Neueste Beiträge der Kategorie Meinung und NICHT Post 1
    6. Neuester Beitrag der zwei Kategorien Analyse&&Feature
    7.-10. Neueste Beiträge der Kategorie Analyse und NICHT Post 6
    11. Neuester Beitrag der zwei Kategorien Externa&&Feature
    12.-15. Neueste Beiträge der Kategorie Externa und NICHT Post 11

  • Nicht das du noch den normalen Loop drum herum hast? Bloß nicht :-?
    Poste doch mal die komplette index.php.

    Um die Artikel in den verschiedenen Loops nicht doppelt zu bekommen, musst du mit $do_not_duplicate arbeiten.

    [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]

  • Na ist ja schon spät ;-)

    [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]

  • damit die 'duplicates' nicht die anzahl der angezeigten posts verwirren, am besten diese methode verwenden:

    http://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action

    genau durchlesen, was hiernach kommt:

    Zitat


    Note for Multiple Posts in the First Category



    also die post id des ersten posts im ersten loop in einen array aufnehmen (auch wenn es nur ein post ist); und dann in der folgenden query diesen parameter entsprechend miteinsetzen:

    Zitat

    <?php query_posts(array('post__not_in'=>$do_not_duplicate));
    if (have_posts()) : while (have_posts()) : the_post();
    ?>

  • Ich komm nicht klar. Zwei Probleme bestehen weiterhin:

    Erstens wird weiterhin dubliziert, was das Zeug hält.

    Das zweite Phänomen, ist gut zu bestaunen, wenn man nochmal auf die Seite geht: http://www.dersalon.org/

    Es wird nämlich drei Mal der neueste Feature-Artikel angezeigt. Obwohl im Query zwei Kategorien stehen. Ist es nicht so einfach?

    Nochmal der Code so wie er im Moment aussieht:

    Ahh, jetz dubliziert er nich, aber zählt auch falsch...

    Einmal editiert, zuletzt von donwash (5. November 2010 um 11:32)

  • hatte ich gestern Abend garnicht bemerkt, aber 2x category_name geht nicht, nimm dann die Kategorie-IDs:

    Code
    cat=2,6,17,38

    [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]

  • oh mann, da hab ich hier vier tage lang reingeschaut, aber nie bemerkt, dass es eine zweite seite gibt. danke für die antworten

    nach vielem hin und her - [COLOR="Gray"]mit den querys habe ich v.a. das cat_and und die tatsache, dass bei einer dublette einfach rechts ein beitrag fehlt, so meine probleme gehabt[/COLOR] - ist das jetzt mein code. der funktioniert auch soweit: http://www.dersalon.org/

    das einzige problem - wenn auch das kleinste - ist, dass weiterhin bei den vier rechten "kleinen" posts theoretisch dubliziert werden könnte.

  • Jep. ganz einfach:

    Nachdem Du ... viel einfacher: Beispiel:

    Code
    $my_first_query = query_posts(etc.);
    rewind_posts();
    $my_second_quer = query_posts(etc.);
    rewind_posts();
    (...)
    if( bla Loop usw.

    rewind_posts(); fährt die Query an den Anfang retour und Du hast für die kommende Abfrage wieder die Ausgangsquery zur Verfügung. Alle anschließenden Fehler sind deinerseits ;)

  • Jep. ganz einfach:

    hmm. Rewind_posts macht doch genau das was ich abstellen will, wenn ich das richtig verstehe. ich benutze jetzt außerdem nicht query_posts, sondern get_posts. anders habe ich category_and nicht ans laufen gebracht.

    theoretisch müsste ich irgendwie die post id dieses posts hinterlegen

    PHP
    <?php $args = array( 
     'category__and' => array(11,408), 
     'numberposts' => array(1));?> 
     <?php 
     $lastposts = get_posts($args); 
     foreach($lastposts as $post) : 
        setup_postdata($post); 
     ?>

    um die id dann im nächsten get_post auszuschließen. oder?

    PHP
    <?php 
     $lastposts = get_posts('numberposts=4&category=11'); 
     foreach($lastposts as $post) : 
        setup_postdata($post); 
     ?>
  • mal ganz unverbindlich ungetestet:

    [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]

  • maxe: elegante Lösung.

    Anderer Ansatz (direkt aus dem Codex):

    ?>

    Firebug laden! Foreregeln bitte lesen. FAQ. Bitte keine Anfragen per PN.

    Einmal editiert, zuletzt von kaiser (10. November 2010 um 16:55)

  • kaiser
    So wie ich donwash verstanden habe, will er im ersten Loop cat 11 haben und im zweiten Loop auch ... aber eben halt keine doppelten Posts aus dieser cat.

    Mir fällt aber auf, gibt des den Parameter numberposts überhaupt :?:

    [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

    Mir fällt aber auf, gibt des den Parameter numberposts überhaupt :?:



    ja, geht mit 'get_posts()'

    auch wenn der codex aussagt, dass 'get_posts()' die parameter von 'query_posts()' verwenden kann, stimmt das zumindest fuer den einen parameter - 'posts_per_page' - nicht; da nimmt 'get_posts()' den parameter 'numberposts'

    http://codex.wordpress.org/Template_Tags/get_posts

Jetzt mitmachen!

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