【ワードプレス】投稿と同一カテゴリーやタグの関連記事を表示する【備忘録】
WordPressでのサイト構築が主になっています。今となっては全世界の35%以上はWordpressを利用したWEBサイトとなっているとのこと。
なので、サイト制作においての備忘録をアップ。
今回は、同じカテゴリーの記事を関連記事などとして表示する方法。
こんな感じで記事の最後などに同一カテゴリーの記事を表示させ、少しでもユーザーの回遊性を向上させる効果を得られれば良いかな…というところでしょうか。
表示している記事と同一カテゴリーの記事を表示させるコード
<?php
$post_id = get_the_ID();
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
query_posts(
array(
'cat' => $cat_id,
'showposts' => 4, //表示させたい件数
'post__not_in' => array($post_id) //表示している記事は関連記事に含めない
)
);
//↓ここに表示させるコードを記入。下記は一例です。
if(have_posts()) :
?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li class="relation_thumbnail">
<div class="relation-image">
<a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
<?php the_post_thumbnail(); ?>
</a>
</div>
<div class="relation-comment">
<span class="post_tag_<?php echo $cat_slug ?>"><?php echo $cat_name ;?></span>
<a href="<?php the_permalink(); ?>"><h4><?php
if(mb_strlen($post->post_title, 'UTF-8')>46){
$title= mb_substr($post->post_title, 0, 46, 'UTF-8');
echo $title.'…';
}else{
echo $post->post_title;
}
?></h4></a>
</div>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
上記のようなコードで私の管理しているサイトでは表示しています。
別件となりますが、記事情報取得の際にquery_postsを使っちゃってますね…。しっかり、wp_reset_query();でリセットすることを忘れずに!
query_posts()はメインクエリを書き換えてしまうなど他機能に影響を及ぼしてしまう可能性がある為、かなり前から非推奨となっています。これからは、メインループではpre_get_postsを、サブループではWP_Queryもしくはget_postsで処理しましょう。
WordPress タイトルの下に注意事項(コメント)を挿入するアクションフック