今表示している記事と同じカテゴリ、タグの記事一覧を取得する

テーマ

今見ているページに関連する記事を用意することで、訪問者の求める情報を多く持つページとなりサイト内回遊率をあげることができます。
WordPressでは関連記事の取得は簡単です。
今回はWordPressで今表示している記事と同じカテゴリ、タグを持つ記事を取得する方法を紹介します。

今見ている記事の持つカテゴリ、タグを取得

記事の持つ情報を取得する方法をおさらいします。
記事の持つカテゴリ、タグはそれぞれ以下の関数を使うことで取得できます。

get_the_category() 記事ループ内で呼び出すとその記事が持つカテゴリの一覧が取得できます。
get_the_tags() 上の関数と同様に、その記事が持つタグの一覧が取得できます。
<?php

// 表示している記事のカテゴリ、タグを取得
$categories = get_the_category();
$tags	    = get_the_tags();

?>

取得したカテゴリを持つ記事を取得

記事ループの条件に get_the_category() で取得したカテゴリIDを渡します。
パラメーター category__in を使用することで、複数のカテゴリを渡した場合いずれかを含む記事を取得できます。

<?php 
// 表示している記事のカテゴリを取得
$categories = get_the_category();

$cat_id = [];
// 表示している記事の持つカテゴリーを持つ記事を取得
if ( !empty($categories) ):
	foreach ( $categories as $cat ):
		$cat_id[] = $cat->term_id;
	endforeach;

	$args = ['category__in' => $cat_id];
endif;

// 条件を渡して記事を取得
if ( !empty($args) ): ?>
<ul>
	<?php 
	$custom_posts = new WP_Query($args);

	while ( $custom_posts->have_posts() ) : $custom_posts->the_post(); ?>
	<li><?php the_time('Y/m/d') ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php 
	endwhile;
	?>
</ul>
<?php endif; ?>

取得したタグを持つ記事を取得

タグの場合もカテゴリ同様に取得できます。

<?php 
// 表示している記事のタグを取得
$tags = get_the_tags();

$tag_id = [];
// 表示している記事の持つタグを持つ記事を取得
if ( !empty($tags) ):
	foreach ( $tags as $tag ):
		$tag_id[] = $tag->term_id;
	endforeach;

	$args = ['tag__in' => $tag_id];
endif;

// 条件を渡して記事を取得
if ( !empty($args) ): ?>
<ul>
	<?php 
	$custom_posts = new WP_Query($args);

	while ( $custom_posts->have_posts() ) : $custom_posts->the_post(); ?>
	<li><?php the_time('Y/m/d') ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
	<?php 
	endwhile;
	?>
</ul>
<?php endif; ?>

テーマ

関連記事