Letzter Post nach Kategorie

  • Auf meiner Startseite werden die Posts getrennt nach Kategorie dargestellt.

    Meine erste Kategorie, "Neuigkeit" wird dann folgendermassen aufgerufen:

    PHP
    foreach( $cat1 as $post ) { ?>	    
        <article class="entry-content">
            <h2><?php _e("<!--:rm-->Eveniments<!--:--><!--:de-->Ereignisse<!--:-->"); ?></h2>
            <h3><?php echo $post['the_title']; ?></h3>	
            <?php echo get_the_post_thumbnail( $post['the_ID'], 'medium' ); ?>
            <p><?php echo $post['the_content']; ?></p>	
            <p class="byline vcard">
            <?php printf( __( '<time class="updated" datetime="%1$s" pubdate>%2$s</time>', 'bonestheme' ), get_the_time('Y-m-j'), get_the_time(get_option('date_format')), get_the_author_link( get_the_author_meta( 'ID' ) )); ?>
            </p>
        </article>

    Das Problem dabei ist, dass hier immer nur der älteste Artikel dargestellt wird, ich möchte aber nur den neuesten darstellen. Wie kann ich dies noch anpassen?

    Danke

    • 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

  • warum arbeitest du nicht WP konform mit Multiplen Loops (new WP_Query())? https://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action

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

  • Da man nicht die ganze Funktion sieht und Du nur vom ältesten, also einem einzigen Artikel pro Kategorie sprichst, kann ich nur vermuten das der Zähler $i nicht hochgezählt wird (also ein $i++; fehlt), weshalb $catN[0] immer überschrieben wird bis die while Schleife abgearbeitet ist. Da die Standardsortierung aber nach ID absteigend erfolgt, hast Du immer den ältesten Artikel einer Kategorie in $catN[0]

    Besonders sinnig ist diese Art der Ausgabe sowieso nicht, weil sie zu viel Zeit und Ram kostet und darüber hinaus wohl aus der Not entstanden ist (fertiges Theme soll angepasst werden). Da mir aber die Zeit fehlt zu erklären wie man das richtig macht hier zwei Ansätze:

    1. Um mit dem Code 1:1 weiter zu arbeiten kannst Du die Sortierung über den Action Hook pre_get_posts() ändern: https://codex.wordpress.org/Plugin_API/Act…e/pre_get_posts

    2. Anstatt mit den Arrays zu arbeiten würde ich nur ein Array mit den Kategorien definieren. Entweder spezifisch, wenn nicht aller Kategorien zum Einsatz kommen sollen oder direkt über get_categories(). Im loop würde ich dann prüfen ob die erste Kategorie des jeweiligen Artikels in einer dieser Kategorien enthalten ist und den Post ausgeben. Im Anschluss, also wenn ein Match vorhanden ist, würde ich diese Kategorie aus dem Array entfernen, wodurch kein weiterer Artikel dieser Kategorie ausgegeben wird. Das ist deutlich weniger Code.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

    Einmal editiert, zuletzt von mensmaximus (14. April 2016 um 09:01)

  • Danke für eure Antworten. Die Seite besteht bereits und diese Anpassung muss jetzt nachträglich noch gemacht werden. Deshalb wäre es am besten, wenn ich mit dem vorhandenen Code weiterarbeiten kann. Die Seite zum Action Hook pre_get_posts() habe ich mir angesehen, bin damit aber etwas überfragt, wie ich diesen noch integrieren kann...
    Meine ganze index.php-Datei wäre hier: https://gist.github.com/anonymous/aabb…f2f24ce2f820b70
    Es betrifft aber nur die Kategorie $cat1, bei den anderen Kategorien ist jeweils nur ein Post vorhanden, deshalb muss dies dort nicht sortiert werden.

Jetzt mitmachen!

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