webコンテンツを徹底強化!WordPressサイト制作とプラグイン&テーマ情報・メンテ/エラー対応から、PHP/CSS/javascript、動画・音・イラスト等制作まで扱うコラム
マルチメディアコンテンツ制作読んどけ☆コラム

【WordPress】人気記事表示のしかた~PVカウント・フィールド格納&ソート(ログイン者カウントなし)

      2021/02/23

今回は、管理人がお仕事のWPサイト開発で使ってみたテクをご紹介します。内容は『人気の(PVが多い)ページを順番に表示』。人気を気にせず、自分の勘や判断力で見るユーザーは多数ではなく、『○○が人気なら見てみるか』というユーザーも多いので、一定の需要はある機能です。 この記事では、『WordPress人気記事実装3パターン・PHPでPVカウントして実装方法』を見ていきます。

WordPressで人気記事を表示する方法3パターン

WordPress Popular Postsなどのプラグインを使用する

WPには豊富なプラグインがあり、『人気記事表示機能』についても、『WordPress Popular Posts』などで対応可能です。いちばんサックリ実装できるのがこの方法。 ただし、他にもいろいろプラグインを入れていると表示が重い・相性悪い・アプデ停止後のコアやPHPバージョンアップが不安みたいなリスクが出ることはあります

Google Analytics Reporting APIと連動させる

rest APIみたいなところからデータ取ったことがある方なら考えると思うアイデア。GoogleアナリティクスにもAPIがあります。

機能的には多くのことができますが、『カウントするフィールド』のほか、『非公開情報への認証』『計測期間』『cronで実行』みたいにいろいろプログラムを組んでやる形になるので、少し難易度は高いといえます。

PVをカウントして数値をカスタムフィールドに格納&多い順番でソート

管理人が取引先のサイトに『こういうのもありますよ~』と提案したのがコレ。 ロジックとしては『ログイン者以外のPVを計測』『カスタムフィールドに数値格納』『数値多い順でソートして表示』という感じ。 数値リセットは『バルクエディター』で一発ですが、期間指定などはGoogleアナリティクスの方が良いかなという印象です。

PVカウント・フィールド格納&ソートでの、人気記事機能の実装のしかた

下準備~カスタムフィールドにPV

まずは、カウントしたPV数値を格納するために、カスタムフィールドを作っておきます。WPの組み込み機能でも、フィールド系プラグインでも、どちらでも大丈夫です。

管理人としては、しょっちゅう使っているので少し慣れてきた『Smart Custom Fields』を使用します。フィールドの名前は『post_views_count』としました。リセットはバルクエディターで一括などがラクです。このやり方では『期間ごと』みたいな格納のされ方はしないので、もしご希望の場合はGoogleアナリティクスAPIなどを検討してください。

プログラム・ポイント

よく使う(かも知れない)WP組み込みの『get_post_meta』。ここでは『post_views_count』のフィールドをとって、『update_post_meta(カスタムフィールドの値を更新する)』で、PVフィールドにカウントをプラスしていきます。条件分岐で『固定ページや、ログインユーザーのカウントは取らない』としました。

あとは、フロント表示部分で、『WP_Query』に、PV順ソートになるようパラメーターを渡して、while文でループを回しました。このプログラムでは『ID・タイトル・パーマリンク』しかとっていませんが、お好みのフィールドやサムネイル画像なども入れることができます。

動作・表示例

いつものように、管理人が持っている著作権フリー曲サイトSSFにつけました。まずはバックエンドから。投稿postのとき、アクセスがあると、こういう風にPVがカウントされていきます。

『 is_page()』または『is_user_logged_in()』のときは『return;』(固定ページのとき・またはログインユーザーのときはreturnを空にしてカウントしない)という条件分岐をくんだので、固定ページではカウントされない&ログインしているブラウザで見たときもカウントされないというのを確認しました。

SSFでのフロント表示例です。テンプレート組み込み位置・ウィジェット位置によってはきちんと見てもらえるので、『PVや滞在時間増加』が見込めそう(テスト運用でフッターテンプレに入れましたが)。 『ショートコードで記事内』も、状況によっては有効と思います。

このほか、『カスタムフィールドPVの値を一覧に表示して、ソートできるように』など、管理画面側のプログラムを組んでやっても、使いやすくなります。

参考リンク

あとがき・まとめ

  • 人気記事機能は、プラグインでも簡単に実装できる
  • 期間指定など細かくやれるのはGoogleアナリティクスAPI
  • 自作のロジックは、PVカウント・数値フィールド格納・その数値でソート

まとめると、このようなところでしょうか。簡易的に人気記事という希望(なるべく余計なプラグインは入れない・フィールドは使っている)であれば、今回のような方法でも大丈夫かと思います(リッチにするには表示を工夫します)。カテゴリーやタグ絞り込みクエリをかませても活用できそうです。


【カテゴリ】 - wpサイト制作事例
【タグ】 - , ,

  関連記事

【静的HTML→WordPressリニューアル】同じデザインでWPにするときの注意ポイント

今回は以前、管理人が『お取引先の会社のサイト(静的HTMLは持っ ...

bulma.cssで、サクッとお洒落モダンデザインにリニューアルしてみる【フレームワークwebサイト制作】

今回は、bulma.cssが、お仕事で扱ったお取引先のWordP ...

WordPressのカスタムフィールド値で記事を絞り込み・検索するサイトの作り方・一部始終を徹底解説

今回は、需要があるかもしれない『WordPressのカスタムフィ ...

WPカスタムフィールドを使って、soundcloudみたいに記事一覧でオーディオ再生できるサイトを作る方法

今回は、管理人が持っている著作権フリー曲サイトに、『カスタムフィ ...

WordPressのログイン・ログアウト・権限システムを理解・カスタマイズして、『会員がコンテンツ読めるサイト』を作ろう

今回は、以前にちょっとお仕事で扱った、『ログインした会員が、コン ...

WPログアウト機能『wp-login.php?action=logout』と『wp_logout_url』の違い~後者はwpnonceで一発ログアウト

今回は、(twitterにもちょっと書いたんですけど)管理人が、 ...

別ディレクトリでの記事の管理・表示を、1つのWordPressを使いまわして対応する方法(プラグイン無しカスタム投稿・wp-blog-header.php)

今回は、別ディレクトリのコーポレート・お仕事サイトの記事管理も、 ...