WordPressで記事内に同じタグの記事一覧を表示する方法
WordPressの記事内に、その記事と同じタグが付いた記事一覧を表示する方法の備忘録です。
同じカテゴリーの記事を取得する
まず初めに、現在表示している記事のタグのIDを取得します。取得したIDと同じタグの記事を、一覧表示するための配列に追加します。
WordPressの記事を表示しているファイル(single.phpなど)の、記事一覧を表示させたい箇所に下記スクリプトを追加します。
<?php
$current_tags = get_the_tags();
foreach($current_tags as $tag):
$current_tag_list[] = $tag->term_id;
endforeach ;
$args = array(
'post__not_in' => array($post -> ID),
'posts_per_page'=> 3,
'tag__in' => $current_tag_list,
'orderby' => 'rand',
);
$query = new WP_Query($args);
?>
1行目のget_the_tags
()
で、現在の記事のタグの情報を取得して、次のforeach
でタグのIDのみを取得しています。
$args
では、取得したタグのIDに加え、表示件数などの設定をしています。次のnew WP_Query()
で、配列の設定をもとに該当する記事情報を取得します。
今回設定した項目の詳細は下記の通りです。
- post__not_in ⇨ 現在の記事を除く
- posts_per_page ⇨ 取得件数(今回は3件)
- tag__in ⇨ 該当のタグのID
- orderby ⇨ 取得順(ランダム)
posts_per_page
の値で、一覧表示する記事の件数を変更できます。
記事を一覧表示する
取得した記事情報を一覧表示します。表示する方法はトップページなどの記事一覧と同様です。
上記のコードのすぐ下に、下記を追記します。
<?php if( $query -> have_posts() ): while ($query -> have_posts()): $query -> the_post(); ?>
<a href="<?php the_permalink() ?>">
<div><?php the_title(); ?></div>
</a>
<?php endwhile; else:?>
<p>関連記事はありませんでした。</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
同じカテゴリーの記事を一覧表示する方法もこちらでまとめています。