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でダイナミックなスライダーを実装する
1月 14, 2025カスタム投稿タイプの条件分岐について
11月 13, 2024MW WP Formでカスタム投稿「shop」のカテゴリーを選択項目に追加する方法
11月 7, 2024