個別記事にカテゴリ別の人気記事を表示する その1

2013.03.18【 ネット・パソコン
個別記事の下に、その記事が属するカテゴリでよく読まれている記事を表示したいと思い、試行錯誤しました。

最初に入れたプラグイン Popular Posts は2年以上更新されていなかったので WordPress Popular Posts に変更。これは良かったんですが、検索エンジンの情報収集ボットまでカウントしてしまって(除去できない)正しい数字ではありませんでした。

というわけで、以下の条件で探しました。
  • ボットをカウントしない
  • 管理者をカウントしない
  • 総合はもちろん、カテゴリ別の人気記事も表示できる
  • キャッシュ系プラグインが入っていても正しくカウントする

全てを満たすプラグインが見つからず、誰かがコードを書いているかもと散々探しても見つからず。アクセス解析データを取得して表示させるタグがあるんじゃないか、とか英語ページまで頑張って見に行きました。
サイドバーに全体のランキングを表示するのはよく見かけるんですけどね…カテゴリ別は先に書いたPPやWPPの情報くらいしかなくて。最終的にはボット・管理者を除外できる WP-PostViews をインストールし、タグは自分で工夫しました。

といっても簡単な2つのタグを組み合わせただけですけど。でもきっと他にも欲しい人がいると思うので置いておきます。

<?php if(in_category('カテゴリID1')): //カテゴリID1の名前 ?>
表示したいもの1
<?php elseif(in_category('カテゴリID2')): //カテゴリID2の名前 ?>
表示したいもの2
<?php endif; ?>

これは条件分岐タグというのだそうで、「表示したいもの」の部分にそのまんま WP-PostViews のカテゴリ別人気記事呼び出しタグを入れただけ。そしたら動いたんで(笑)。

個別記事がカテゴリ1に属する場合はカテゴリ1の人気記事を表示し、そうでなくカテゴリ2だったらカテゴリ2の、カテゴリ3だったらカテゴリ3の人気記事を5件ずつ表示させるようにしてあります。
ただし、複数のカテゴリに属する場合は先に表示されているカテゴリの記事が表示されるようです(多分IDの数字が小さい方)。
親カテゴリと子カテゴリがある場合の親カテゴリの挙動は分かりません。私は親カテゴリに登録している記事がないので。ご自分で設置して確認してみてください。質問されても答えられないのでご勘弁。

<?php if(in_category('カテゴリID1')): //カテゴリID1の名前 ?>
  <?php if (function_exists('get_most_viewed_category')): ?>
  <ol><?php get_most_viewed_category(カテゴリID1, 'post', 5); ?></ol>
  <?php endif; ?>
<?php elseif(in_category('カテゴリID2')): //カテゴリID2の名前 ?>
  <?php if (function_exists('get_most_viewed_category')): ?>
  <ol><?php get_most_viewed_category(カテゴリID2, 'post', 5); ?></ol>
  <?php endif; ?>
<?php elseif(in_category('カテゴリID3')): //カテゴリID3の名前 ?>
  <?php if (function_exists('get_most_viewed_category')): ?>
  <ol><?php get_most_viewed_category(カテゴリID3, 'post', 5); ?></ol>
  <?php endif; ?>
<?php endif; ?>

緑で表示したカテゴリIDには各カテゴリIDの値を入れてください。
//の後ろはカテゴリ名です。自分の覚書としてなので別になくてもいいです。
(カテゴリID1, 'post', 5)の最後の5は5件表示の指定です。好きな数にしてください。
あとはカテゴリの数だけ
<?php elseif(in_category('カテゴリID')): //カテゴリIDの名前 ?>
<?php if (function_exists('get_most_viewed_category')): ?>
<ol><?php get_most_viewed_category(カテゴリID, 'post', 5); ?></ol>
<?php endif; ?>
の部分を増やしてください。

この条件分岐タグを使えば、カテゴリ別で表示できる他のプラグインでも同じように利用できます。

さてこの話、実はここで終わりません。いまだ悩んでいたりします。それについてはその2にて。

関連記事

同カテゴリでよく読まれている記事