当ブログのように、興味あることをどんどん放り込んで行くようなブログだと、最終的には、どこに何があるのか
「わけがわからないよ」(キュウベ◯)
ということになってしまいそうです。
あの、WordPressのウィジェットで「最近の投稿」ってありますよね。あれだと、カテゴリ関係なく新しい記事がどんどん表示されますので、もうごちゃ混ぜ状態なんですよね。
「同じカテゴリの最新記事一覧」の必要性
で、せっかく当ブログに来てくれた人が「なんだこりゃ?」ってなるんじゃないかと。
やっぱりね、たとえば「免疫力カテゴリ」の記事にやってきた人は、免疫力関連の記事を見たいですよね。
免疫力関連の記事にやってきたのに、「最近の投稿」にモンストの記事が出てたら・・・やっぱり「なんだこりゃ?」ってなりそうですよね。^^;
だから、そのカテゴリだけの最新記事を表示させたいわけです。
そこで、「今見ている記事」と「同じカテゴリ」の最新記事「だけ」を表示させる方法はないものかと・・・ちょっと調べてみました。
そうすると、あるんですね。WordPressって便利です。
表示させるためのコード
「同じカテゴリの最新記事一覧」
を、表示させたい場所に、以下のコードを貼り付けます。
<h3><?php the_category(‘ | ‘); ?>の最新記事</h3>
<?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’ => 5,
‘post__not_in’ => array($post_id)
)
);
if(have_posts()) :
?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
これを普通は、「single.php」のソースに貼り付けます。
えーと、WordPress管理画面の「外観」→「テーマの編集」ですね。そこから「single.php」を探して、それで貼り付けます。
サイドバーの一番上に当たる部分に貼り付けますと、当ブログのような表示になります。
具体的には・・・
具体的な貼り付け方
当ブログは「賢威」という有料のワードプレステンプレートを使っているのですが、「single.php」の中の、
<?php get_sidebar(); ?>
という記述のすぐ上に貼り付けています。
でも、ただ貼り付けただけじゃ見た目がね、他の表示と統一されないんですよね。だから、スタイルシートに合わせてちょっとだけ書き加えます。
「賢威」の場合は以下のように。
<aside class=”sub-conts sidebar”>
<section id=”recent-posts-2″ class=”section-wrap widget-conts widget_recent_entries”><div class=”section-in”>
<h3 class=”section-title”><?php the_category(‘ | ‘); ?>の最新記事</h3>
<?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’ => 20,
‘post__not_in’ => array($post_id)
)
);
if(have_posts()) :
?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?></div></section>
</aside>
太字の部分が付け加えた部分です。これで、「最近の投稿」というのと、同じ表示になりました。
他のテンプレートを使っている場合は、ブラウザでソースを表示させて、サイドバーの他の表示に合わせて書き加えればいいと思います。