WordPressカスタマイズ事例

現在の記事の関連記事(先祖カテゴリ、タームの記事)一覧を表示する、かつ当記事自身は一覧から除く

たとえば「ブログ」というカスタム投稿タイプで、以下のようなカテゴリ(ターム)構成にするとします。

 ブログ
  営業部
   きょうのできごと
   勉強になる話
  技術部
   技術について
   エンジニアの雑学

このとき、「きょうのできごと」のある記事のページで、親カテゴリ「営業部」の記事一覧を表示したい、しかも当記事は除いて、というケースがあります。
いわゆる関連記事の表示ですね。

その方法を今回はご紹介。

テーマのsingle-blog.php に以下を記述します。

$post_type = 'blog'; //「ブログ」のカスタム投稿タイプ名
$taxonomy = 'blog_cat'; //「ブログ」のカスタム分類(タクソノミー)名
$terms = get_the_terms($post->ID,$taxonomy);
$this_term = $terms[0];
$ancestors = get_ancestors($this_term ->term_id, $taxonomy );
if($ancestors){
$ancestor_id = end($ancestors); //先祖タームの最終要素IDをセット
}else{
$ancestor_id = $this_term->term_id; //自分自身のタームIDをセット
}
//当記事を除いて記事一覧を取得
$posts = get_posts( array(
'post_type' => $post_type,
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'id',
'terms' => $ancestor_id
)
),
'posts_per_page' => 4,
'exclude' => get_the_ID()
));
foreach ($posts as $post){
//表示処理
}

カテゴリの階層が増えれば、一番先祖のタームの記事一覧取得になります。

これってなにげにニーズあるんですよ。ご参考にしてください。


関連するWordPressカスタマイズ事例