Fehler beim Auslesen eines Arrays - Es wird zu viel geliefert

  • Ich habe ein Problem mit einer Funktion, die ich geschrieben habe. Ich lese alle Artikel aus einer Kategorie aus und speichere diese in ein Array. Wenn ich jetzt bestimmte Werte ausgeben will, dann passiert folgendes:

    Bin ich im ersten Artikel der Kategorie, zeigt er mir viermal den ersten Beitrag als Vorigen Post an. Bin ich im letzten Beitrag, zeigt er mir fünfmal den Letzten Beitrag als nächsten Post an. In allen Beiträgen dazwischen funktioniert die Ausgabe reibungslos. Hier mein Code:

    Meine Frage lautet nun, wie ich die Ausgabe begrenzen kann, damit der Fehler nicht passiert. Zur Veranschaulichung hier noch drei Links. Zu beachten ist die Navigation mit Thumbnails unter den Videos:

    Erster Beitrag (zu viele vorige Postlinks): http://floopie.de/swtor-die-kopfgeldjaegerstory-1/
    Einer dazwischen (funktioniert): http://floopie.de/swtor-die-kopfgeldjaegerstory-4/
    Letzter Beitrag (zu viele Nächste Beiträge): http://floopie.de/swtor-die-kopfgeldjaegerstory-5/

    Meine Vermutung geht dahin, dass bei der Ausgabe des Ersten und des Letzten Beitrags zu viele Werte in die Variable gespeichert werden. Warum, weiß ich aber nicht. Hilfe wäre echt Klasse!

    • 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

  • hallo,

    ich habe nicht viel gelesen...

    PHP
    $allePosts = get_posts('&$args');

    Die Zeile bringt sicherlich viele Probleme

    verwende besser:

    PHP
    $allePosts  = get_posts( $args );


    und nachfolgendes sieht wild aus:

    PHP
    global $post;
        $aktuell = $post->ID; // ID von aktuellem Beitrag
        $categories = get_the_category();
        $thiscat = $categories[0]->cat_ID; // Kategorie auslesen
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

    ^- was hast du vor?

    egal - verwende anstelle

    PHP
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

    besser:

    PHP
    $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;

    absint kannst du nachlesen
    https://developer.wordpress.org/reference/functions/absint/


    PHP
    $args = array(
      'posts_per_page' => 1,
      'paged' => $paged,
      'orderby' => 'date',
      'order'   => 'ASC',  
      'cat' => $thiscat,
      'post_status' => 'publish'
    );

    paged? hier? keine ahnung, es ist spät.
    https://codex.wordpress.org/Template_Tags/get_posts

    Ist das Jobforum ausgefallen?

    Mit offenen Augen träumen

  • Der Fehler muss irgendwo hier liegen:

    PHP
    <?php 
    global $post;
    $nextposts = get_posts($prevPost);
    foreach($nextposts as $post) :    setup_postdata($post);    
    ?>    
    <div>    
    <li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Vorige Folge<span></a></li>    
    </div>
    <?php endforeach; ?>

    Wenn ich die Variable mit $prevPost var_dump($prevPost); ausgebe enthält sie je nach Beitrag entweder die ID eines Beitrages oder aber den Wert NULL. Wenn ich nun aber folgendes probiere:

    PHP
    if (isset($prevpost)) {
    foreach($nextposts as $post) :    setup_postdata($post);        
    ?>    
    <div>    
    <li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Vorige Folge<span></a></li>    
    </div>
    <?php endforeach;
    }
    else {
     }


    Dann bekomme ich gar keine Ausgabe mehr. Ich verzweifel noch daran. Erst mal schlafen gehen :-)

  • Der Fehler muss irgendwo hier liegen:

    PHP
    <?php 
    global $post;
    $nextposts = get_posts($prevPost);
    foreach($nextposts as $post) :    setup_postdata($post);    
    ?>    
    <div>    
    <li><a rel="nofollow" href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Vorige Folge<span></a></li>    
    </div>
    <?php endforeach; ?>

    hier noch einmal das Beispiel von
    http://codex.wordpress.org/Template_Tags/get_posts

    in $prevPost sollte ein Array für die Abfrage sein.


    ein wp_reset_postdata(); fehlte mir und der inhalt vom Array ($prevPost)

    Hier zur inspiration
    http://callmenick.com/post/custom-wo…with-pagination

    Mit offenen Augen träumen

  • hier noch einmal das Beispiel von
    http://codex.wordpress.org/Template_Tags/get_posts

    in $prevPost sollte ein Array für die Abfrage sein.


    ein wp_reset_postdata(); fehlte mir und der inhalt vom Array ($prevPost)

    Hier zur inspiration
    http://callmenick.com/post/custom-wo…with-pagination

    Aber $prevPost ist doch vorher schon definiert und mit einer PostID belegt. Jetzt stehe ich auf dem Schlauch.

  • Hat sich erledigt. Ich habs endlich geschafft. So sieht das ganze Konstrukt dann aus:

    Danke für eure Hilfe. Das Ergebnis ist zu sehen unter den jeweiligen Videos als Thumbnail Navigation für Serien unter (z.B.): http://floopie.de/swtor-die-kopfgeldjaegerstory-4/

Jetzt mitmachen!

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