Zoomy

WordPress プラグインなしで記事のランキングを表示させる

今回は、WordPress でプラグインを使用しないで記事のランキングを表示させる方法をご紹介します。この方法をを使えば、WordPress のサイドバーなどに記事のランキングを表示させることが可能です。

WPプラグインなしで記事をランキング表示させる手順

1. functions.php にビュー数をカウントするコードを追加

まずは、functions.php にビュー数をカウントするコードを追加します。functions.php ファイルに次のコードを追加して、各記事のビュー数をカウントします。

function post_view_count() {
  global $post;
  $post_id = $post->ID;
  $meta_key = 'post_views_count';
  $views = get_post_meta($post_id, $meta_key, true);

  if ($views === '') {
    delete_post_meta($post_id, $meta_key);
    add_post_meta($post_id, $meta_key, '0');
  } else {
    $views++;
    update_post_meta($post_id, $meta_key, $views);
  }
}

2. single.php にビュー数をカウントする関数を実行するコードを追加

記事ページ (single.php) でビュー数をカウントするために、上記で定義した post_view_count() 関数を実行するコードを追加します。通常、the_post() 関数の後に次のコードを追加します。

post_view_count();

次に、テーマファイルにビュー数を表示したい場合は次のコードを追加します。特にビュー数は表示しないで良いという人は飛ばして下さい。テーマファイル (例: single.php、content.php など) に記事のビュー数を表示するためのコードを追加します。

echo get_post_meta(get_the_ID(), 'post_views_count', true);

3. 記事をビュー数でランキング表示するクエリを作成

ビュー数でランキング表示するための WP_Query を作成します。例えば、以下のコードはビュー数の多い上位5件の記事を取得し、ランキング表示用のループを作成します。

$args = array(
  'post_type' => 'post',
  'posts_per_page' => 5,
  'meta_key' => 'post_views_count',
  'orderby' => 'meta_value_num',
  'order' => 'DESC'
);
$popular_posts = new WP_Query($args);
if ($popular_posts->have_posts()) {
  while ($popular_posts->have_posts()) {
    $popular_posts->the_post();
    // ここに表示する内容を記述(例: タイトル、リンク、ビュー数など)
  }
}
wp_reset_postdata();

これで、プラグインを使わずに WordPress の記事をビュー数でランキング表示することができます。ただし、プラグインを使わない方法は、テーマや WordPress のバージョンによっては互換性の問題が発生することがあります。適切な場所にコードを追加し、必要に応じてカスタマイズして使用してください。

4. サイドバーなどでランキングを表示する

上記で説明したコードを組み合わせた、サイドバーなどでビュー数ランキングを表示するサンプルコードを示します。

 'post',
    'posts_per_page' => 5,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
  );
  $popular_posts = new WP_Query($args);

  // ランキング表示用ループ
  if ($popular_posts->have_posts()) {
    echo '
    '; while ($popular_posts->have_posts()) { $popular_posts->the_post(); echo '
  • '; echo '' . get_the_title() . ''; echo ' (' . get_post_meta(get_the_ID(), 'post_views_count', true) . ' views)'; echo '
  • '; } echo '
'; } wp_reset_postdata(); ?>

このサンプルコードを、WordPress テーマのサイドバー (sidebar.php) やフッター (footer.php) などに追加することで、記事のビュー数ランキングを表示できます。

プラグインを使わない方法は、テーマファイルへの直接的なコード追加が必要ですので、テーマのアップデート時や別のテーマへの切り替え時に注意が必要です。テーマファイルの変更を行う前に、バックアップを取ることをお勧めします。また、子テーマを使用してカスタマイズを行うことで、アップデート時の問題を回避できます。