WordPressにJetpackのアクセス解析を導入しているサイトも結構あるかと思います。
そんな、Jetpackの統計情報を利用して、投稿・固定ページ等に以下のような統計情報を表示するカスタマイズ方法の紹介です。
WordPress Popular Postsプラグインを利用しても、同様の機能を持つカスタマイズは行うことができます。ただ、Popular Postsはサーバーに負担がかかるプラグインとしても有名です。
反面、Jetpackの統計情報は外部サーバーが集計してくれるので、「サーバーに負担をかけたくない」と言うのであれば、こちらの方法の方が適しています。
目次
主な手順
カスタマイズの主な手順は以下のようになります。
- Jetpackプラグインをインストールする
- テーマのテンプレートファイルにPHPコードをコピペする
- 必要な場合はCSSで見た目の調整をする
プラグインのインストール以外は、コードをコピペするだけなので、比較的簡単にできるかと思います。
Jetpackプラグインをインストールする
まず、Jetpackを利用していない場合は、インストールして統計機能を有効にしておく必要があります。
Jetpackをインストールした時点で、デフォルトで「サイト統計情報」機能は有効になっていると思います。
統計機能が無効になっている場合は、Wordpress管理画面の「Jetpack → 設定 → Engagement」にある「サイト統計情報」を有効にしてください。
これで事前準備は完了です。
テーマのテンプレートファイルにPHPコードをコピペする
あとは、投稿ページや、固定ページのWordpressテンプレートファイルの表示させたい場所に、以下のコードをコピペするだけです。
<?php //Jetpackで管理者のみにPV表示 //Jetpackがインストールされていて統計機能が有効になっているか $is_jetpack_stats_module_active = class_exists( 'jetpack' ) && Jetpack::is_module_active( 'stats' ); //ログインユーザーでJetpackが有効な時のみ実行 if ( is_user_logged_in() && $is_jetpack_stats_module_active ): ?> <div class="admin-pv"> <?php //全体、月別、週別、日別のPV表示 $views_all = 0; $views_monthly = 0; $views_weekly = 0; $views_daily = 0; //Jetpack //全体のPVを取得 $jetpack_views = stats_get_csv('postviews', array('days' => -1, 'limit' => 1, 'post_id' => $post->ID )); if (isset($jetpack_views[0]['views'])) { $views_all = $jetpack_views[0]['views']; } //直近30日のPVを取得 $jetpack_views = stats_get_csv('postviews', array('days' => 30, 'limit' => 1, 'post_id' => $post->ID )); if (isset($jetpack_views[0]['views'])) { $views_monthly = $jetpack_views[0]['views']; } //直近7日のPVを取得 $jetpack_views = stats_get_csv('postviews', array('days' => 7, 'limit' => 1, 'post_id' => $post->ID )); if (isset($jetpack_views[0]['views'])) { $views_weekly = $jetpack_views[0]['views']; } //直近1日のPVを取得 $jetpack_views = stats_get_csv('postviews', array('days' => 1, 'limit' => 1, 'post_id' => $post->ID )); if (isset($jetpack_views[0]['views'])) { $views_daily = $jetpack_views[0]['views']; } echo '<span class="all">全体:<span class="pv-count">', $views_all, '</span></span>'; echo '<span class="monthly">月:<span class="pv-count">', $views_monthly, '</span></span>'; echo '<span class="weekly">週:<span class="pv-count">', $views_weekly, '</span></span>'; echo '<span class="daily">日:<span class="pv-count">', $views_daily, '</span></span>'; echo '<span class="jp-page"><a href="'.admin_url().'admin.php?page=stats&view=post&post='.get_the_ID().'"title="Jetpackの統計" target="_blank">詳細</a></span>'; ?> </div> <?php endif ?>
大抵のテーマであれば、投稿ページであればsingle.php。固定ページであればpage.phpあたりに貼り付ければいけるかと思います。
参考 Jetpackから閲覧数を簡単に取得してみた。singleページに一行追加でOK。 | Amiten.inc – web企画・制作の株式会社アミテン
CSSで見た目の調整をする
あとは、多少見た目を調整するために、style.css等に以下のようなスタイルを追記します。
.admin-pv { text-align: right; } .admin-pv > span { margin: 0 5px; padding: 0 3px; }
全体・月・週・日別のPV表示部分には、個別にclassが割り当てられているので、ある程度は自由にスタイルもカスタマイズできるようHTML要素を出力しています。
動作確認
カスタマイズ後は、PHPコードを挿入した部分に、以下のような「ページ単位の統計情報」が表示されます。
「詳細」リンクは、個々のページの解析画面へのリンクです。
リンクをクリックすると、以下のような「ページアクセス状況推移グラフ」を表示できたり、
月別、週別、日別の数値を見て、増減を細かに調べることもできるようになっています。
このカスタマイズの利点と難点
今回のカスタマイズは、以下のような利点と難点があるのでご注意ください。
利点
このカスタマイズを行うことによる利点は以下のようなものがあるかと思います。
- サーバーへの負荷が少ないJetpackで、ページごとのアクセスを表示できる
- Jetpackの機能を利用した詳細な解析画面も利用できる
とにかく、サーバーへの負荷を少なくしたいのであれば、Wordpress Popular Postsよりは、Jetpackを用いて表示させた方が良いかと思います。
難点
反面、Jetpackを利用する難点は以下。
- Jetpackのサーバーから解析結果を得るので表示が多少遅い
Jetpackサーバー(wordpress.com)からデータを取得するので、データ取得に時間がかかり、多少表示は遅くなるかと思います(データベースから取得するよりは)。ですので、一覧ページなどで何個も表示させるカスタマイズをする場合は、かなり時間がかかるので不向きです。
また、管理者以外に「ページ毎のPV情報」を公開する場合も、Jetpackサーバーに負荷がかかる可能性があるので、あまりおすすめはしません。あくまで自分(もしくは複数管理者)が見る程度の利用にしておいた方が良いような気がします。
まとめ
こんな感じで、「サーバーになるべく負荷のかからないページ毎PV表示機能」を追加することができます。
Google Analyticsとかを利用していると、個別ページの解析ページにたどり着くまで結構な手順を踏む必要があったりします。
反面、今回のカスタマイズだと、「内容確認等で自分のサイトを閲覧」するついでに、「ページ毎のPV状況」も確認することができて、かなり楽です。
というわけで、「自分のサイト確認のついでにページ毎PVの確認もしたい」とか「サーバーになるべく負荷をかけずページ毎PVの確認がしたい」なんて場合には良いかと思います。
「全体のみのPV表示」をしたり、「管理者だけではなく読者(検索やSNSで訪問した方)にもPV表示したい」人向けのカスタマイズ方法の質問があったのでトピックへのリンク。
「Jetpackの統計情報を利用してWordPress個別ページにアクセス数表示を行う方法」のカスタマイズ