Kategorie aus einem doppelten Loop ausschließen

  • Hallo an alle WP'ler ;-)

    ich bin zurzeit mit dem Loop beschäftigt und komme bei einer Sache einfach nicht weiter. Und zwar will ich den ersten Beitrag normal ausgeben lassen und die nachfolgenden als gekürzte Fassung.

    Klappt auch alles super.

    Jetzt hab ich bei mir im Footer (im neuen Layout was noch nicht online steht) eine art "featured artikel".. Dort werden nur Beiträge einer besonderen Kategorie angezeigt.

    Ich scheitere aber daran die Kategorie aus dem Loop auszuschließen :( Vielleicht erklärt mein Code es noch ein bissle besser..

    Der Eintrag:

    PHP
    <?php if (in_category('1')) continue; ?>

    verhindert ja das die Kategorie "1" angezeigt wird. Aber wie kann ich diese Kategorie aus dem oberen Loop auschließen?
    Ich komme irgendwie noch nicht auf den trichter :(

    Weiß jemand Rat?

    Versucht habe ich es schon mit:

    PHP
    <?php $my_query = new WP_Query('cat=-1&showposts=1'); while ($my_query->have_posts()) : $my_query->the_post();
     $do_not_duplicate = $post->ID;?>

    aber dann zeigt er mir einfach im oberen Loop den letzten Beitrag an. Gibs noch ne andere Möglichkeit?

    Wär super dankbar für nen kleinen Tip in die richtige Richtung

    • 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

  • Ich fasse noch mal zusammen, um es Dir geht: Oben wird ein einzelner Artikel ausgegeben, unten der normale Loop. Im unteren Loop klappt das Ausschließen einer Kategorie schon, im oberen nicht. Stimmt das?

    Wenn die auszuschließende Kategorie nur Beiträge enthält, die keine anderen Kategorien zugeordnet haben, kannst Du in beiden Loops einfach "cat=-<ID>" ergänzen. ID der Kategorie dort einfügen, das Minus davor sorgt für den Ausschluss.

    Wenn das also bei Dir nicht geht, liegt es eventuell daran, dass die Beiträge mehreren Kategorien zugeordnet sind? Falls nicht, könnte es daran liegen, dass die ID 1 ist? Hast Du es mal mit einer anderen Kategorie probiert? In einigen Template-Tags ist "-1" ja der Default-Wert, auch wenn das hier eigentlich nicht sein darf (aber ich bin zu faul, das wieder aus dem WP-Quellcode rauszusuchen...).

    Wenn es das auch nicht ist, würde ich was anderes vorschlagen: Mach daraus doch einfach wieder einen Loop, das ist eh einfacher. Definiere Dir eine kleine Zählvariable und setze sie im Loop hoch. Wenn sie 1 ist, gibt es die komplette Ausgabe, ansonsten die gekürzte Ansicht. Da drin kannst Du zur Not ja wie bisher auch mit in_category prüfen.

  • Danke dir für deine ausführliche antwort :)

    Ja die Kategorie ist die 1..
    Ist das echt so schlimm bei WordPress? Wusste nicht das es sofort solche Auswirkungen hat..

    Ich werde es mal mit ner anderen ID versuchen und wenn nicht melde ich mich nochmal bezüglich deines anderen Vorschlags ;-) der klingt auch nicht schlecht

  • Leider komme ich immer noch nicht weiter :(

    Es liegt nicht daran welche Kategorie ich ausschließe. Wenn ich Kategorie 5 ausschließen will und diesen Codeschnipsel benutze:

    [LEFT]

    PHP
    <?php $my_query = new WP_Query('cat=-5&showposts=1'); while ($my_query->have_posts()) : $my_query->the_post();
     $do_not_duplicate = $post->ID;?>

    [/LEFT]

    dann wird schon wieder der ganz erste Beitrag im ersten loop gezeigt, im 2ten Loop ist alles ok!

    Deinen 2ten Vorschlag schaffe ich nicht umzusetzen. Da scheiter ich dran - warum auch immer.
    Was mache ich bei der "cat=-5" Geschichte falsch?

    Gibt es noch andere Möglichkeiten???

  • Also ich habe Deinen Code für den ersten Loop gerade mal in meine index.php eingebaut und bei mir funktioniert es. Mit -1 wird mir dann der neueste Beitrag ausgegeben, der nicht ausschließlich der Kategorie 1 zugeordnet ist.

    Wenn Du schreibst "dann wird schon wieder der ganz erste Beitrag im ersten Loop gezeigt", was meinst Du damit eigentlich genau? Es wird der älteste Beitrag ausgegeben? Hat dieser Beitrag denn die auszuschließende Kategorie zugeordnet und auch nur diese und keine andere? Denn wenn nicht, ist es ja erstmal nicht direkt falsch, Deine Query enthält ja keine Angabe darüber, wie sortiert werden soll. Falls es der älteste Beitrag ist anstatt des neuesten aber sonst alles stimmt: Hängt das vielleicht mit dem falsch-herum-sortieren-Bug von MySQL von letztens zusammen? Hast Du da für die normalen Ansichten einen Fix eingebaut, der hier vielleicht nicht wirkt?

  • Hi du,

    da bin ich wieder.
    Ich komm einfach nicht mehr weiter ;-)


    Ich hab das mit dem doppelten loop jetzt aufgegeben, vllt klappt es ja mit der Lösung die du vorgeschlagen hast besser.

    Zitat

    Mach daraus doch einfach wieder einen Loop, das ist eh einfacher. Definiere Dir eine kleine Zählvariable und setze sie im Loop hoch. Wenn sie 1 ist, gibt es die komplette Ausgabe, ansonsten die gekürzte Ansicht. Da drin kannst Du zur Not ja wie bisher auch mit in_category prüfen.

    Wie bekomme ich das denn hin? Hat jemand vllt ein kleines Beispiel dafür? Ich weiß leider nicht wie ich das genau anstellen soll..

Jetzt mitmachen!

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