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

      2021/02/23   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の値を一覧に表示して、ソートできるように』など、管理画面側のプログラムを組んでやっても、使いやすくなります。

参考リンク

あとがき・まとめ

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

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


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

  関連記事

【WordPressサイト製作】レスポンシブ左右ボックスとaudioで、音楽素材サイトを作る
【WordPress】人気記事表示のしかた~PVカウント・フィールド格納&ソート(ログイン者カウントなし)
別ディレクトリでの記事の管理・表示を、1つのWordPressを使いまわして対応する方法(プラグイン無しカスタム投稿・wp-blog-header.php)
サイト制作事例~バンド・音楽情報サイト・ブログをオウンドメディアサイトに(ミュージックサロンp+luckさま)
WordPressのカスタムフィールド値で記事を絞り込み・検索するサイトの作り方・一部始終を徹底解説
WPカスタムフィールド~記事にthe_metaでフィールド出力&評価つける・get_post_metaとの違い
サイト制作お仕事事例~WPで仮想通貨投資情報サイトを(justiceクリプトカレンシーズ・AID LLCさま)
【オリジナルWPサイト】スターターテーマ&フレームワーク・Materializeでオリジナルデザイン(レストラン風)
【wordpress制作事例】自社著作権フリー音楽サイト、ロゴ付きおしゃれ1カラムデザインにリニューアル
【WordPress】プラグイン無し、カンタンページネーション作成・パラメータ指定例も紹介(paginate_links)
【WordPressテーマ改造】カスタマイザープレビューが表示されなくなった件の対応(ファンクション名変更・twenty seventeen)
WPログアウト機能『wp-login.php?action=logout』と『wp_logout_url』の違い~後者はwpnonceで一発ログアウト