WordPressの記事にサムネイル付きのページ送りを設定する

 



2020/1/09

ワードプレスにはページ送り(次の記事・前の記事)を設定することができますが、サムネイル付きのものや同じカテゴリー内だけで巡回させるものなどはカスタマイズが必要になります。
今回はページ送りのカスタマイズ方法を考察したいと思います。

シンプルなページ送り

最もシンプルなページ送りの設定方法は下記になります。
サムネイル付きにするにはもうひと工夫が必要になります。

<?php
previous_post_link('%link', '前の記事', ture);
next_post_link('%link', '次の記事', ture);
?>

サムネイル付きのページ送り

まずは前後の記事情報を取得します.

<?php
//前の記事の情報を取得
$prev_navigation = get_adjacent_post(false, '', true);

//次の記事の情報を取得
$next_navigation = get_adjacent_post(false, '', false);
?>

次に前後の情報があった場合にURL・タイトル、そして大事なサムネイルを取得するように設定します。

<?php if(!empty($prev_navigation)):?>
<a href="<?php echo get_permalink($prev_navigation->ID); ?>">
<?php echo get_the_post_thumbnail($prev_navigation->ID,array(100,100));?>
<?php echo $prev_navigation->post_title;?>
</a>
<?php endif;?>

<?php if(!empty($next_navigation)):?>
<a href="<?php echo get_permalink($next_navigation->ID); ?>">
<?php echo get_the_post_thumbnail($next_navigation->ID,array(100,100));?>
<?php echo $next_navigation->post_title;?>
</a>
<?php endif;?>

少し複雑な設定が必要ですが見栄えはシンプルなものよりかなり良い感じです!
ただこれだと記事全部が対象になってしまうのでカテゴリー別にするには不十分です。

カテゴリー別のページ送り

カテゴリー別にするには前述の記事情報取得で利用した下記のタグに除外するカテゴリーを記述する方法を用います。

<?php
//falseとtrueの間に除外するカテゴリーのIDを入力
$prev_navigation = get_adjacent_post(false, '1,3,4', true);

//falseとfalseの間に除外するカテゴリーのIDを入力
$next_navigation = get_adjacent_post(false, '1,3,4', false);
?>

上記のように除外するカテゴリーのIDを入力すれば良いのですが、 カンマ区切りの文字列にする必要があるので 若干厄介です。

まず登録されている全てのカテゴリーの情報を取得します。
取得したカテゴリーの情報から現在の記事のカテゴリーを除外します。
抽出された配列をカンマ区切りの文字列に加工して終了です。
何のことやらわからないという方は下記をご確認ください。

<?php
//全てのカテゴリーの情報を取得
$categories = get_categories();

//現在の記事のカテゴリーの情報を取得
$category = get_the_category($post->ID);

//全てのカテゴリーの情報から現在の記事のカテゴリーを除外したもの(除外するカテゴリーのID)を配列として抽出
foreach($categories as $val){
	if($val->term_id != $category[0]->term_id){
		$delete[]=$val->term_id;
	}
}

//抽出された配列をカンマ区切りの文字列に加工
$delete_id = implode(",", $delete);

//除外するカテゴリーのIDを入力
$prev_navigation = get_adjacent_post(false, $delete_id, true);
$next_navigation = get_adjacent_post(false, $delete_id, false);
?>

上記で基本的には動作しますが、カテゴリーが複数選択される記事や、カテゴリーに全く属さない記事があると機能しないので注意が必要です。

まとめ

ページ送りに関しては色々と方法がありますが、カテゴリーで巡回させる方法は若干厄介であると感じました。
必要であればお試しください。