2020/11/01 14:15
[Wordpress]カスタム投稿で同じカテゴリーのものだけページネーションしたい場合
これ意外と苦労しました。似たような処理の情報が多すぎて自分の実現した事の正解がなかなか分からなかったです。
結局いろんな方法を試してはエラーを繰り返した挙句、めちゃくちゃシンプルな記述でいけたというのが分かりました。
やりたい事
・カスタム投稿のシングルページ(個別ページ)内に「次の記事」と「前の記事」のページネーションを実装する
つまり、表示中の投稿の前後の記事のURL等を出力するというのがゴールです。
・まずは通常の投稿の場合
<?php
$prev_post = get_previous_post();
if( !empty( $prev_post ) ) {
$prev_url = get_permalink( $prev_post->ID );
echo $prev_url;
}
$next_post = get_next_post();
if( !empty( $next_post ) ) {
$next_url = get_permalink( $next_post->ID );
echo $next_url;
}
?>
通常の投稿の場合はこういった記述で前後の記事のURLを取り出してました。
・カスタム投稿の場合
<?php
$prev_post = get_previous_post(true, '', 'タクソノミー名'); // 同カテゴリーのものだけ判定する
if( !empty( $prev_post ) ) {
$prev_url = get_permalink( $prev_post->ID );
echo $prev_url;
}
$next_post = get_next_post(true, '', 'タクソノミー名'); // 同カテゴリーのものだけ判定する
if( !empty( $next_post ) ) {
$next_url = get_permalink( $next_post->ID );
echo $next_url;
}
?>
カスタム投稿の場合はカッコの中に記述が増えまして、タクソノミー名を入れる必要があります。
タクソノミー名ってのはfunctions.phpにカスタム投稿自体を作った時に指定した名前になります。
同カテゴリーだけを出力するんだから、まずはカテゴリーを取得しなければ…!という考えでいろいろと調べてたので遠回りしてしまいましたが、こんな感じでいけました。
現場から以上です!
4355