Posts nicht anzeigen, wenn sie bereits angezeigt werden...

  • Hallo Gemeinde,

    der Titel meiner Frage ist vielleicht etwas verwirrend, aber es geht darum, dass ich am Anfang meiner Website nur Posts anzeigen will, die zur Kategorie "News" gehören. Diese Posts gehören grundsätzlich auch zu einer anderen Kategorie (z.B. "Misc").

    Nun möchte ich in einem zweiten Bolck auf meiner Site jeweils zwei Posts aus je einer Kategorie anzeigen, aber NUR wenn sie gerade NICHT bereits weiter oben angezeigt werden.

    Beispiel:
    Auf der Homepage meiner Website http://www.der-prinz.com stehen oben zwei Posts, die je in die Kategorien "News" und eine weitere Kategorie (im Moment "Misc" es könnte aber jede andere kategorie sein) gehören.
    Weiter unten folgen dann zwei Ausgabeblöcke, die Artikel der Kategorie "Misc" enthalten. Wenn nun ein Artikel bereits oben als "News" ausgegeben wird, soll dieser nicht nochmal in "Misc" ausgegeben werden, sondern der chronologisch nächste (ältere) Artikel. Es betrifft im Moment den Post "Was ist mein Blog wert..."

    Die Aufgabe für diesen zweiten Ausgabeblock lautet also quasi:

    Gib den ersten Artikel aus der Kategorie "Misc" aus, aber nur, wenn dieser nicht bereits weiter oben als "News" ausgegeben wird. Wird er oben bereits ausgegeben, dann nimm den nächsten Artikel.

    Hat jemand eine Idee, wie das zu bewerkstelligen ist?

    • 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

  • PHP
    $do_not_duplicate = array(); // vor den Loops!
    
    
    $do_not_duplicate[] = $post->ID; // ID im Loop merken
    
    
    // Loop ohne Duplikate:
    query_posts( array(
      'post__not_in' => $do_not_duplicate
    ));
  • Ich bin zu doof dazu...bekomme eine Fehlermeldung, das mit der PHP Syntax was nicht stimmt.

    WO muss ich nun WAS einbauen...sorry für das blöde Fragen, aber ich bin echt ein relativer PHP Dödel.

    Hier meine home.php bis einschließlich der ersten relevanten Ausgabebox. Wäre echt dankbar für eine Lösung, die auch ich kapiere ;-)

  • Du hast da schon eine Variable $do_not_duplicate drin, vielleicht beißt sich da was. An der Stelle würde ich auch versuchen, die Array-Variante einzubauen.

    Ansonsten poste mal bitte, wie du meinen Code eingebaut hast und wie die Fehlermeldung exakt lautet.

    Mal noch ein (mehr oder weniger) vollständiges Beispiel:

    Hilft dir das weiter?

  • Danke schon mal. Hab jetzt Dein Beispiel genommen. Leider kommt immer noch ne Fehlermeldung:

    Parse error: syntax error, unexpected T_DOUBLE_ARROW in /homepages/19/d28888804/htdocs/WEBSITES/PRINCE/wp-content/themes/InterPhase/home.php on line 56

    Hier der Code:

  • Sorry, mein Fehler. Korrekturen siehe oben. ;-)

    Codex-Beispiel (4):

    Code
    query_posts( [COLOR="Red"][B]array([/B][/COLOR]
      'cat' => 22, 
      'year'=> $current_year, 
      'monthnum'=>$current_month, 
      'order'=>'ASC',
    [B][COLOR="#ff0000"])[/COLOR][/B]);


    array() fehlte, sorry... :oops:

  • So, jetzt setze ich noch einen drauf, weil es so schön geklappt hat: Ich würde gerne im unteren Bereich ("more interesting stuf...") eine chronologische Liste von Posts aus allen (oder auch nur bestimmten) Kategorien ausgeben. Die dürfen aber wiederum nicht bereits weiter oben (bei "recent stuff" oder in den Kategorieblöcken) ausgegeben worden sein.

    Im Moment trickse ich da ein Bisschen und lasse je zwei Artikel der jeweiligen Kategorie mit einem Offset ausgeben. Das funktioniert zwar, ist aber nur innerhalb der Kategorien chronologisch, nicht über die ganze Liste

    Wie das nun wieder hinbekommen?

    Der Einfacheit halber hier nun dr komplette Code der home.php

  • Wie das nun wieder hinbekommen?


    Genauso. Du füllst erstmal weiter das $do_not_duplicate-Array mit den Post-IDs der bereits angezeigten Posts:

    PHP
    <?php $do_not_duplicate[] = $post->ID; ?>


    Und unten schreibst du einfach deine Queries etwas um (Array-Schreibweise), so dass du den post__not_in-Parameter mit unterbringen kannst. Beispiel:

    PHP
    <?php query_posts("cat=27&showposts=2&offset=3"); ?>
    PHP
    <?php query_posts( array(
     "cat" => 27,
     "showposts" => 2,
     "offset" => 3,
     'post__not_in' => $do_not_duplicate 
    )); ?>

Jetzt mitmachen!

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