WordPressの投稿ページで前後の投稿を2件ずつ表示したい

投稿の個別ページで前後へのリンクを表示するには、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をお忘れなく。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


top