Mit get_posts kann man einen gewünschten Post anzeigen und dabei nicht nur auf title, sondern auch excerpt, content, custom fields etc abfragen. Um in WordPress abzufragen, welches der vorherige oder nächste Post ist, geht man so vor:

next_post und prev_post in WordPress abfragen

Zunächst einmal speichere ich die ID des aktuellen Posts in einer Variablen, denn da man mit get_posts weitere Beiträge abfragt, funktioniert die Abfrage $post->ID später nicht mehr richtig. Dann rufe ich mit get_posts alle Artikel ab. Da per default nur die letzten 5 Artikel abgerufen werden, gibt man hier das Parameter numberposts=-1 mit, damit werden dann wirklich alle Artikel abgerufen. Will man den nächsten oder vorherigen Artikel nur aus der aktuellen Kategorie abfragen, hängt man das entsprechende Parameter einfach an.

$aktuell = $post->ID; 
$allePosts = get_posts('numberposts=-1');

Anschließend werden alle der abgerufenen IDs in einem Array gespeichert, dieses heißt im Beispiel $postarray.

$postarray = array();
	foreach ($allePosts as $post) {
	   $postarray[] += $post->ID;
	}

Wo in diesem Array befindet sich nun der aktuelle Beitrag? Dies wird mit der Variable $current abgefragt

$current = array_search($aktuell, $postarray);

$current sagt also, an welcher Position in diesem Array der aktuell angezeigte Beitrag ist. Davon ausgehend fragt man also ab, welche Post-ID an der Stelle davor und danach steht:

$prevPost = $postarray[$current-1];	
$nextPost = $postarray[$current+1];

Mit diesen beiden IDs und get_posts kann man also den vorherigen und nächsten Beitrag anzeigen:

<?php
global $post;
$myposts = get_posts('include=' . $prevPost);			
foreach($myposts as $post) :
	setup_postdata($post);	
	?>
	<div class="prevPost">
		<h2><?php the_title(); ?></h2>
		<?php the_excerpt(); ?>
		<a href="<?php the_permalink(); ?>">lesen</a>
	</div>
<?php endforeach; ?>

Zusammenfassung: prev_post und next_post ausgeben

Hier nochmal der gesamte Code im Überblick

<?php
$aktuell = $post->ID; // ID von aktuellem Beitrag
$allePosts = get_posts('numberposts=-1'); // alle gewünschten Posts abfragen
 
$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
 
 
/* mit get_post vorherigen Post ausgeben */
global $post;
$myposts = get_posts('include=' . $prevPost);			
foreach($myposts as $post) :
setup_postdata($post);	
?>
<div class="prevPost">
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>">lesen</a>
</div>
<?php endforeach; ?>
 
<?php
/* mit get_post nächsten Post ausgeben */
global $post;
$myposts = get_posts('include=' . $nextPost);			
foreach($myposts as $post) :
setup_postdata($post);	
?>
<div class="nextPost">
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>">lesen</a>
</div>
<?php endforeach; ?>