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, 'blog_cat' );
if($ancestors){
	$ancestor_id = end($ancestors); //先祖タームの最終要素IDをセット
}else{
	$ancestor_id = $this_term->term_id; //自分自身のタームIDをセット
}

$ancestor = get_term_by('id',$ancestor_id,'blog_cat');

//当記事を除いて記事一覧を取得
$posts = get_posts( array(
	'post_type' => $post_type,
	'taxonomy' => $taxonomy,
	'term' => $ancestor->slug,
	'posts_per_page' => 4,
	'exclude' => get_the_ID()
));

foreach ($posts as $post){

 //表示処理

}

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

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


その他のWordPressカスタマイズ事例