投稿の個別ページで前後へのリンクを表示するには、WordPressの独自関数、the_post_navigationを使用すると一発なんですが、一つ前ともう一つ前、一つあとともう一つあとを画像つきでリンクさせたい、、なんてことがあるかもしれません。
いろいろ試したんですが下記の方法に行き着きました。
//該当の投稿を日付順に全部取得
$posts = get_posts(array('post_type' => 'post', 'posts_per_page' => -1, 'orderby' => 'date', 'order' => 'ASC));
$post_ids = array();
foreach($posts as $p){
//投稿IDの配列を作成
$post_ids[] = $p->ID;
}
//表示中の投稿IDが何番目か取得
$current = array_search($post->ID, $post_ids);
$nextID = $post_ids[$current + 1]; //$currentの1つあと
$next2ID = $post_ids[$current + 2]; //$currentの2つあと
$prevID = $post_ids[$current - 1]; //$currentの1つ前
$prev2ID = $post_ids[$current - 2]; //$currentの2つ前
これで各投稿IDが取得できるので、あとは
$post = get_post($nextID);
setup_postdate($post);
などしてしまえば、リンクもアイキャッチもタイトルも取得し放題です。
最後にwp_reset_postdataをお忘れなく。。