【WordPress】人気記事表示のしかた~PVカウント・フィールド格納&ソート(ログイン者カウントなし)
| 更新: 2024/02/11 | 2409文字

今回は、管理人がお仕事の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の値を一覧に表示して、ソートできるように』など、管理画面側のプログラムを組んでやっても、使いやすくなります。
参考リンク
◆update_post_meta(WordPress Codex 日本語版)
https://wpdocs.osdn.jp/関数リファレンス/update_post_meta
あとがき・まとめ
- 人気記事機能は、プラグインでも簡単に実装できる
- 期間指定など細かくやれるのはGoogleアナリティクスAPI
- 自作のロジックは、PVカウント・数値フィールド格納・その数値でソート
まとめると、このようなところでしょうか。簡易的に人気記事という希望(なるべく余計なプラグインは入れない・フィールドは使っている)であれば、今回のような方法でも大丈夫かと思います(リッチにするには表示を工夫します)。カテゴリーやタグ絞り込みクエリをかませても活用できそうです。
【カテゴリ】- WordPressファンクションetc
【タグ】- get_post_meta(wordpress), Smart Custom Fields, update_post_meta(WordPress)