WordPressで人気記事を表示する方法【プラグインなし】【コピペOK】

ウェブデザイナー KEISUKE NAKAO
  • このエントリーをはてなブックマークに追加

WordPressでのブログ作成において、人気記事や関連記事を表示させることは多くのサイト運営者にとって重要な要素です。
しかし、プラグインを使用するとサイトが重くなったり、思うような動作やデザインにならないことがしばしばあります。
特に多くのプラグインを導入することで、ページの読み込み速度が遅くなり、ユーザー体験に悪影響を与える可能性があります。

そこで、この記事ではプラグインを使わずにWordPressサイトに人気記事を表示する方法をご紹介します。コピペOKなコードも提供するので、初心者の方でも簡単に実装できます。

プラグインに頼らず、自分の手でサイトの機能を強化することで、より軽快で魅力的なサイト運営が可能になります。
プラグインなしで人気記事を表示させる手順を学び、WordPressサイトをワンランクアップさせましょう!

完成形

本サイト内の「人気ブログランキング」は紹介するコードで作成されています。

記事のアクセス数を計測するための関数を追加

まずは、記事のアクセス数を計測するための関数をテーマ内のfunctions.phpに追加します。
※functions.phpはバックアップを取得しておきましょう。

/* ---------------------------------------------------------

  記事のアクセス数を計測

--------------------------------------------------------- */
function my_custom_popular_posts($post_id) {
  $count_key = 'post_popularity';       // カスタムフィールドキーを設定
  $count = get_post_meta($post_id, $count_key, true);
  if ($count == '') {
    $count = 0;
    delete_post_meta($post_id, $count_key);
    add_post_meta($post_id, $count_key, '0');
  } else {
    $count++;
    update_post_meta($post_id, $count_key, $count);
  }
}
function my_custom_track_posts($post_id) {
  if (!is_single()) return;
  if (empty($post_id)) {
    global $post;
    $post_id = $post->ID;
  }
  my_custom_popular_posts($post_id);
}
add_action('wp_head', 'my_custom_track_posts');

クローラーのアクセスをカウントしない場合

クローラーのアクセスをカウントしない場合は、下記のコードを追記します。

/*クローラーのアクセスを判別
-----------------------------*/
function is_bot() {
  $ua = $_SERVER['HTTP_USER_AGENT'];
  
  $bot = array(
    'Googlebot',
    'Yahoo! Slurp',
    'Mediapartners-Google',
    'msnbot',
    'bingbot',
    'MJ12bot',
    'Ezooms',
    'pirst; MSIE 8.0;',
    'Google Web Preview',
    'ia_archiver',
    'Sogou web spider',
    'Googlebot-Mobile',
    'AhrefsBot',
    'YandexBot',
    'Purebot',
    'Baiduspider',
    'UnwindFetchor',
    'TweetmemeBot',
    'MetaURI',
    'PaperLiBot',
    'Showyoubot',
    'JS-Kit',
    'PostRank',
    'Crowsnest',
    'PycURL',
    'bitlybot',
    'Hatena',
    'facebookexternalhit',
    'NINJA bot',
    'YahooCacheSystem',
    'NHN Corp.',
    'Steeler',
    'DoCoMo',
  );
  foreach( $bot as $bot ) {
    if (stripos( $ua, $bot ) !== false){
      return true;
    }
  }
  return false;
}

アクセスがカウントされるようにするために下記をsingle.phpなどの表示させたいページにに追加しましょう。

<?php if( !is_user_logged_in() && !is_bot()) {set_post_views(get_the_ID()); } ?>

人気記事一覧を表示するサンプルコード

single.phpなどの表示させたい箇所に下記コードを設置すれば人気上位5件の投稿が表示されます。
サイドバーなどに表示させたい場合はsidebar.phpなどに設置。
このページではサイドバーに表示させています。

<?php
$args = array(
    'post_type' => array('post'),            
    'posts_per_page' => 5,                  
    'meta_key' => 'post_popularity',         
    'orderby' => 'meta_value_num',           
    'order' => 'DESC',                       
    'ignore_sticky_posts' => 1,              
);
$popular = new WP_Query($args);
if ($popular->have_posts()) :
?>
    <?php while ($popular->have_posts()) : $popular->the_post(); ?>
        <!-- 人気記事の表示コードをここに追加 -->
    <?php endwhile; ?>
<?php else : ?>
    <p class="no-exist">人気記事は存在しません</p>
<?php endif;
wp_reset_postdata(); ?>
‘post_type’ => array(‘post’),                                          WordPressのWP_Queryオブジェクトを使用して特定の投稿タイプ(この場合は標準の投稿)を取得するための条件を指定しています。
カスタム投稿タイプの場合はarray(‘custom_post_type’)を記入すれば対応できます。
‘posts_per_page’ => 5, クエリが返す投稿の数を制限します。この例では、最大5件の投稿を取得するように指定しています。状況に応じて表示させたい分の数字を入れてください。全表示にしたい場合は-1を指定。
‘meta_key’ => ‘post_popularity’, クエリが投稿をフィルタリングまたはソートする際に使用するカスタムフィールドキーを指定します。今回は先ほどfunctions.phpで指定したpost_popularityを指定します。
‘orderby’ => ‘meta_value_num’,カスタムフィールドの数値データを基準にして投稿を並べ替えるために使用されます。これにより、指定されたメタキーの値が数値として解釈され、並べ替えが行われます。
‘order’ => ‘DESC’, クエリの結果を降順(Descending Order)で並べ替えることを指定します。これは、データを大きい順または新しい順に並べ替える場合に使用されます。反対に小さいものから大きいもの、古いものから新しいものの順で並べ替えたい場合は’ASC’を使用します。
‘ignore_sticky_posts’ => 1, スティッキーポスト(先頭固定表示)を通常の投稿と同じように扱い、クエリの結果に影響を与えないようにする設定です。デフォルトでは、スティッキーポストはクエリの結果の最初に表示されますが、この引数を使用することでその動作を無視することができます。

まとめ

アクセス数の計測と人気記事ランキングの作成は完了です。これで、人気記事をさらに多くの読者に届けるための準備が整いました。ぜひランキングを設置して、サイトの魅力を引き出してください!
functions.phpの編集が必要ですが、プラグインを使わずにサイトのパフォーマンスを向上させるには効果的な方法です。
WordPressで人気記事をプラグインなしで表示するには、PHPファイルの編集やカスタムクエリの作成が必要です。これらの作業はWordPressのコア部分に関わるため、実行前後に必ずバックアップを取りましょう。

プラグインを使わずに人気記事を表示することで、サイトの速度を保ちつつ、ユーザーにより良い体験を提供できます。ぜひこの方法を試してみてください。

  • このエントリーをはてなブックマークに追加

書いた人

ウェブデザイナー KEISUKE NAKAO

ウェブデザイナーとして入社して現在はフロントエンジニアとしても活動しています。Ludiusの数少ないWindowsユーザーです。 サッカー観戦とWEST.が好きです。