ブログ記事に関連記事として「同カテゴリー記事のリスト」を掲載することは、ブログで行っておきたいSEO対策の一つです。
当ブログでは旧Movabletype時代から、同カテゴリー記事を「関連記事」として各記事ページに表示させていました。ところが、WordPressに移行してから、ネット上で多く紹介されている方法を試してみたところ、私が表示させたい形にはなりませんでした。
この度、問題を解決して、WordPressでも理想的なリスト表示ができるようになりました。新しい方法を紹介します。
子カテゴリーの記事も表示されてしまう
似た内容の記事同士で内部リンクすることで、検索エンジンが、記事のテーマを理解しやすくなります。もちろん、人間にとっても、関連記事が掲載されていることは便利なはず。SEOはユーザビリティと同義です。
ところが、ネット上で紹介されている方法で同カテゴリーの記事を表示すると、子カテゴリーに所属する記事まで表示されてしまうのです。多くの子カテゴリがぶら下がっているカテゴリに属している記事だと、100記事以上のリストができてしまいます。
ユーザビリティの向上どころか、リンクだらけで分りにくくなってしまっています。そこで、子カテゴリー記事は除いて、同一カテゴリー記事を表示する方法を考えてみました。
category__in= を使う
テーマの同カテゴリー記事リストを表示させたい位置に、
[php]<?php
$categories = get_the_category();
foreach($categories as $category):
$related_posts = get_posts(array(‘category__in’ => array($category->cat_ID), ‘exclude’ => $post->ID, ‘numberposts’ => $post->ID, ‘numberposts’ => -1));
if($related_posts): ?>
<ul>
<?php foreach($related_posts as $related_post): ?>
<li><a href="<?php echo get_permalink($related_post->ID); ?>"><?php echo $related_post->post_title; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; endforeach; ?>[/php]
を設置してください。
4行目が勘所です。4行目は
[php]$related_posts = get_posts(‘category__in=’.$category->cat_ID.’&exclude=’.$post->ID.’&numberposts=-1′);[/php]
でも動きました。
ネット上で多く紹介されているコードは、4行目が
[php]$related_posts = get_posts(‘category=’.$category->cat_ID.’&exclude=’.$post->ID.’&numberposts=-1′);[/php]
になっています。category=でカテゴリーを指定すると、小カテゴリも含まれてしまうのです。
category__in=で指定すると、小カテゴリは含まれなくなります。
ぜひお試しを!
コメント