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:
<div id="episode">
<?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;
$args = array(
'posts_per_page' => 1,
'paged' => $paged,
'orderby' => 'date',
'order' => 'ASC', 'cat' => $thiscat,
'post_status' => 'publish'
);
$allePosts = get_posts('&$args');
// alle gewünschten Posts abfragen numberposts=-1
$postarray = array(); // und in Array speichern
foreach ($allePosts as $post)
{
$postarray[] += $post->ID;
}
$current = array_search($aktuell, $postarray); // Position des aktuellen Beitrags im Array suchen
$prevPost = $postarray[$current-1]; // vorherigen Beitrag abfragen
$nextPost = $postarray[$current+1]; // nächsten Beitrag abfragen
$arr = array_values($postarray);
$first = (isset($arr[0])) ? $arr[0] : null; //ersten Beitrag finden
$last = (isset($arr[count($arr)-1])) ? $arr[count($arr)-1] : null; //letzten Beitrag finden
?>
<?php /* mit get_post den ersten Post ausgeben */
global $post;$firstposts = get_posts('include=' . $last);
foreach($firstposts as $post) : setup_postdata($post);
?>
<div>
<li style="margin-left:20px"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Erste Folge<span></a></li>
</div>
<?php endforeach; ?>
<?php /* mit get_post den ersten Post ausgeben */
global $post;$nextposts = get_posts('include=' . $nextPost);
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; ?>
<?php /* mit get_post den ersten Post ausgeben */
global $post;$curposts = get_posts('include=' . $aktuell);
foreach($curposts as $post) : setup_postdata($post);
?>
<div>
<li style="border:2px solid red"><a href="#"><?php the_post_thumbnail(); ?><span>Aktuelle Folge<span></a></li>
</div>
<?php endforeach; ?>
<?php /* mit get_post den ersten Post ausgeben */global
$post;$prevposts = get_posts('include=' . $prevPost);
foreach($prevposts as $post) : setup_postdata($post);
?>
<div>
<li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Nächste Folge<span></a></li>
</div>
<?php endforeach; ?>
<?php /* mit get_post den ersten Post ausgeben */global $post;$lastposts = get_posts('include=' . $first);
foreach($lastposts as $post) : setup_postdata($post);
?>
<div>
<li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?><span>Neueste Folge<span></a></li>
</div>
<?php endforeach; ?>
<div style="clear:both"></div>
</div>
Alles anzeigen
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!