[Google]WordPressでプラグインを使わずGoogle Analytics APIを使って人気記事ランキングを表示する

ワードプレスでプラグインを使わず「Google Analytics API」を使って、アクセスランキングを表示してみる。


ブログをある程度の期間やってると人気のページや、アクセスの多いページを表示したくなりませんか?

ワードプレスだと「wordpress プラグイン 人気記事ランキング」なんかで検索すると色んなプラグインがでてきて簡単に実装することができます。

しかし今回は、プラグインを使わず、グーグルアナリティクスのデータを使って人気記事ランキングを取得、表示する方法を覚書がてら紹介したいと思います。

プラグインを使わず、Google Analytics APIを使って人気記事ランキングを実装するには、Google Analytics APIを使用してデータを取得するので、
Google Analyticsを使っている。というのが条件になります。

ライブラリをダウンロード。

いくつかあるライブラリの中から、一番わかりやすそうだった、「GAPI」を使うことにしました。
リンク先の左下よりダウンロードが可能です。

GAPI

PHPファイルの中身を少しカスタマイズ。

ダウンロード後、zipを解凍していくつかあるサンプルのPHPより example.report.php を選びました。そのファイルをテキストエディタで開きます。
以下のような中身になっていると思います。

    <?php
    define(‘ga_email’,'youremail@email.com’);
    define(‘ga_password’,'your password’);
    define(‘ga_profile_id’,'your profile id’);

    require ‘gapi.class.php’;

    $ga = new gapi(ga_email,ga_password);

    $ga->requestReportData(ga_profile_id,array(‘browser’,'browserVersion’),array(‘pageviews’,'visits’));
    ?>
    <table>
    <tr>
      <th>Browser &amp; Browser Version</th>
      <th>Pageviews</th>
      <th>Visits</th>
    </tr>
    <?php
    foreach($ga->getResults() as $result):
    ?>
    <tr>
      <td><?php echo $result ?></td>
      <td><?php echo $result->getPageviews() ?></td>
      <td><?php echo $result->getVisits() ?></td>
    </tr>
    <?php
    endforeach
    ?>
    </table>

    <table>
    <tr>
      <th>Total Results</th>
      <td><?php echo $ga->getTotalResults() ?></td>
    </tr>
    <tr>
      <th>Total Pageviews</th>
      <td><?php echo $ga->getPageviews() ?>
    </tr>
    <tr>
      <th>Total Visits</th>
      <td><?php echo $ga->getVisits() ?></td>
    </tr>
    <tr>
      <th>Results Updated</th>
      <td><?php echo $ga->getUpdated() ?></td>
    </tr>
    </table>

まずは上のほうにあるアドレス、パスワード、プロファイルIDを記述します。

    define(‘ga_email’,'youremail@email.com’);
    define(‘ga_password’,'your password’);
    define(‘ga_profile_id’,'your profile id’);

Google Analytics APIの認証には以下3つのパラメータが必要となります。

  • emailアドレス (Google Analyticsの認証設定をしているアドレス」)
  • パスワード (上記emailアドレスのパスワード)
  • profile id (アクセスランキングのデータを取得したいサイトのプロファイルID)

プロファイルIDはGoogle Analytics管理画面のトップページで
対象となるレポートの編集(右のほう)をクリックして、画面左上にされている数字がprofile idです。

次に取得したい内容に変更するためデフォルトで入っている

$ga->requestReportData(ga_profile_id,array(‘browser’,'browserVersion’),array(‘pageviews’,'visits’));

を以下の用に変更します。

$ga->requestReportData(ga_profile_id,array('pageTitle','pagePath'),array('pageviews','visits'),
 '-pageviews', $filter='ga:pagePath=~^/blog/', $start_date='2011-01-01', $end_date='2011-02-01', $start_index=1, $max_results=10);

上記の記述に変更することで以下のような内容で Google Analytics のデータを取得します。

  • $filter=’ga:pagePath=~^/blog/’ でホームのページや他のページは取得せず、スラッグが blog から始まるものだけを取得。
  • ‘-pageviews’ でページビュー数の多い順に取得。
  • $start_date=’2011-01-01′, $end_date=’2011-02-01′ が取得する期間。解析期間を2011年1月1日~2011年2月1日までの期間に設定。
  • $max_results=10 が取得件数。表示を10件、つまり1位~10位までの表示に。

-pageviews となっているところを -visits と変えると、visits数の多い順。という風に並びます。

最後に取得したデータをHTMLで表示します。

      <td><?php echo $result ?></td>

を以下のように変更。

  <td><a href='<?php echo $result->getPagepath() ?>'><?php echo $result->getPagetitle() ?></a></td>

これで、パーマリンク付のページタイトルを表示します。
出力時のHTMLがテーブルになっているので、リスト要素を使って、CSSでデザインしてあげるといい感じになりそうです。

CSSでリスト要素に

list-style:decimal;

とスタイリングすると数字もでるのでランキング表示になりますね。

ワードプレスに設置

ワードプレスでアクセスランキングを表示したい場合の設置方法は、
フォルダ名はなんでもいいのですが、例として「ga-an-api」という名前のフォルダを作って、その中に example.report.php と gapi.class.php を入れてあげます。

で、ga-an-apiフォルダを使用しているテーマフォルダにいれます。
あとは表示したい箇所に読み込んであげるだけです。

サイドバーに表示したい場合は sidebar.php内に

<?php include( TEMPLATEPATH . '/ga-an-api/example.report.php' ); //アクセスランキング表示 ?>

のように記述して表示してください。

以上です。
絞り込んでの表示など色んな方法での取得が可能なので色々試してみてはどうでしょう。

とても便利なAPIで、アクセスランキングとして使う以外にもレポートとして使ったり様々な事ができそうですね。

ただ、結構重いAPIなので、サイト内に表示したりする場合はAPIを毎回叩かず
にキャッシュするようにする必要がありますね。
ワードプレスだと、プラグインで簡単にキャッシュでできるので、頻繁に情報が変わらないといけないようなページでない限り、是非しておきましょう。

参考・参照リンク

Google Analytics APIを使ったアクセスランキング表示 : エクスギア Blog

CakePHPからGoogle Analytics APIを使う方法 – Unix的なアレ

Google Analytics APIをPHPから使ってページランキングを表示する « Bluestick.JP 開発メモ

Data API #filters- データ フィード – Google Analytics – Google Code

ディメンションおよび統計情報リファレンス – Google Analytics – Google Code

“[Google]WordPressでプラグインを使わずGoogle Analytics APIを使って人気記事ランキングを表示する” への3件の返信

コメントは受け付けていません。