While building Lightstorm, my soon to be released custom WordPress theme, I added next and previous links to the bottom of each individual custom post item. In this case I wanted to build a portfolio and to enable the user to click backwards or forwards through the entire portfolio. I added the WordPress next and previous links code thinking it was a nice easy job and then realised that the links were not taking our portfolio custom sorting into account. Oh.
Having googled the problem I couldn’t find exactly what I was looking for so I set about writing some of my own code to fix this and here it is for you to use to.
<?php
global $post;
$prev_title = "";
$next_title = "";
$args = array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_type' => 'portfolio',
'post_status' => 'publish' );
$myposts = get_posts( $args );
$arr = array();
foreach( $myposts as $post ) : setup_postdata($post);
//build array of posts
$arr[] += $post->ID;
endforeach;
wp_reset_query();
//find index of current post id in the array
$currentIndex = array_search($post->ID, $arr);
$prevIndex = $currentIndex-1;
$nextIndex = $currentIndex+1;
$maxNumber = count($arr) - 1;
//show the links
if($currentIndex != 0){
$prevID = $arr[$prevIndex];
$prev_title= "«« ".get_the_title($prevID);
$prev_permalink = get_permalink($prevID);
}
if($currentIndex != $maxNumber){
$nextID = $arr[$nextIndex];
$next_title= get_the_title($nextID)." »»";
$next_permalink = get_permalink($nextID);
}
echo "<div class='navigation'>";
echo "<div class='five columns alpha'>";
echo "<a href='".$prev_permalink."'>".$prev_title."</a>";
echo "</div>";
echo "<div class='five columns omega'>";
echo "<a href='".$next_permalink."'>".$next_title."</a>";
echo "</div>";
echo "</div>";
?>
If there is a better way of doing this we’d love to know.