WordPressでタグ別に関連記事を表示し、記事が1つの場合は非表示にする方法
ブログの読者に関連する記事を提供することは、訪問者の滞在時間を延ばし、
再訪率を高めるために非常に効果的です。
今回は、WordPressでタグに基づいて関連記事を表示し、
タグに関連する記事が1つしかない場合には非表示にする方法を紹介します。
手順1: single.phpファイルを開く
まず、使用しているテーマフォルダ内のsingle.phpファイルを開きます。これは各投稿の表示を制御するテンプレートファイルです。
手順2: 関連記事表示のためのコードを追加
single.phpファイル内の適切な場所(通常は本文の後)に以下のコードを追加します。
このコードは、タグに基づいて関連記事を取得し、それらを表示するものです。
また、関連記事が1つしかない場合には表示しないように条件を追加しています。
<?php
// 関連記事を表示する関数
function related_posts_by_tags() {
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach ($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args = array(
'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'posts_per_page' => 5, // 表示する関連記事の数
'caller_get_posts' => 1
);
$my_query = new WP_Query($args);
// 記事の数をカウントする
$related_posts_count = $my_query->post_count;
if ($related_posts_count > 1) {
if ($my_query->have_posts()) {
echo '<h3>関連記事</h3><ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
} else {
echo '<p>関連記事はありません。</p>';
}
wp_reset_query();
}
}
// 関数を呼び出す
related_posts_by_tags();
?>
カテゴリーを指定する場合
<?php
// 関連記事を表示する関数
function related_posts_by_tags_and_category($category_id) {
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach ($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args = array(
'tag__in' => $tag_ids,
'category__in' => array($category_id), // 特定のカテゴリーIDを指定
'post__not_in' => array($post->ID),
'posts_per_page' => 5, // 表示する関連記事の数
'caller_get_posts' => 1
);
$my_query = new WP_Query($args);
// 記事の数をカウントする
$related_posts_count = $my_query->post_count;
if ($related_posts_count > 1) {
if ($my_query->have_posts()) {
echo '<h3>関連記事</h3><ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
} else {
echo '<p>関連記事はありません。</p>';
}
wp_reset_query();
}
}
// 関数を呼び出す。カテゴリーIDを指定
related_posts_by_tags_and_category(12);
?>
ランダムに表示する場合
<?php
// 関連記事を表示する関数
function related_posts_by_tags_and_category($category_id) {
global $post;
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach ($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
$args = array(
'tag__in' => $tag_ids,
'category__in' => array($category_id), // 特定のカテゴリーIDを指定
'post__not_in' => array($post->ID),
'posts_per_page' => 5, // 表示する関連記事の数
'orderby' => 'rand', // ランダムに並び替え
'caller_get_posts' => 1
);
$my_query = new WP_Query($args);
// 記事の数をカウントする
$related_posts_count = $my_query->post_count;
if ($related_posts_count > 1) {
if ($my_query->have_posts()) {
echo '<h3>関連記事</h3><ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
} else {
echo '<p>関連記事はありません。</p>';
}
wp_reset_query();
}
}
// 関数を呼び出す。カテゴリーIDを指定
related_posts_by_tags_and_category(12);
?>
手順3: ファイルを保存
single.phpファイルにコードを追加したら、ファイルを保存し、
サーバーにアップロードします。これで設定は完了です。
まとめ
このコードをsingle.phpに追加することで、タグに基づいて関連記事を表示し、
関連記事が1つしかない場合には表示しないようにできます。
これにより、読者により関連性の高いコンテンツを提供し、
サイトのエンゲージメントを向上させることができます。
ぜひ、この方法を試してみて、ブログの読者体験を向上させてください。


WordPressで非階層タクソノミーをチェックボックス形式で扱う方法【開発者向けTips】
7月 30, 2025WordPressで症例ページを管理するカスタム投稿&分類設計ガイド【サンプル構成付き】
7月 23, 2025【CF7対応】textarea の改行を br に反映する方法:確認画面で見やすく表示する実装術
7月 2, 2025