Google Analytics APIを使いWordPressの人気記事ランキングを表示する

2014年7月31日

Google Analytics API

以前、 Google Analytics API v3をPHPから利用する方法 という記事を書きました。今回はその続きで、Google Analytics API から取得したデータを使って WordPress のサイドバーにアクセスランキングを表示する方法を紹介します。このブログのサイドバーにあるアクセスランキングも、ほぼ同じコードで実現しています。

プラグインに頼らず、Google Analytics のアクセス解析情報からランキングを作成したい方は試してみてください。

目次

  1. ソースコード
  2. サイドバーからランキング html ファイルを読み込み
  3. cron 設定

ソースコード

Google Analytics API v3をPHPから利用して月間PVトップ10を取得する方法 > PHP から API を叩く にある google-analytics-api.php に追記・修正します。

プログラムを実行すると、/var/www/wordpress/wp-content/themes/hoge/google-analytics.html が作成されます。

<?php
//google-analytics-api.php
//ライブラリ読み込み
require_once __DIR__ . '/src/Google_Client.php';
require_once __DIR__ . '/src/contrib/Google_AnalyticsService.php';

//追記 WordPress の関数を使いたいため wp-load.php 読み込み
require_once '/var/www/wordpress/wp-load.php';

//中略
//...

//昨日の PV 数 TOP 6 を取得
$yesterday = date_i18n('Y-m-d', strtotime('-1 day', current_time('timestamp')));
$result = $service->data_ga->get(
    'ga:' . PROFILE_ID,
    $yesterday, //開始日
    $yesterday, //終了日
    'ga:pageviews',
    array(
        'dimensions'  => 'ga:pagePath',
        'sort'        => '-ga:pageviews',
        'max-results' => '6' //件数
    )
);

//ランキング表示用の html ファイルを作成
$html = '';
foreach ($result['rows'] as $value) {
    //API から 取得できる URL
    $url = $value[0];
    //URL から WordPress の postId を取得
    $postId = url_to_postid($url);
    //postid が見つからない場合はスキップ
    if ($postId === 0) {
        continue;
    }

    //postId から 記事情報を取得
    $post = get_post($postId);
    //記事タイトルを取得
    $title = $post->post_title;
    //サムネイル画像
    $thumbnail = get_the_post_thumbnail($postId);
    //他に情報が欲しければ適当に。postId があればほとんどの記事情報が取れる
    //...
    
    //取得した情報を使用してランキング用 html をゴリゴリ組み立て
    //htmlのエスケープも必要に応じて
    //...
    $html .= $thumbnail . PHP_EOL;
    $html .= '<a href="' . $url .'" title="' . $title .'">' . $title . '</a>' . PHP_EOL;
    //...
}
//組み立てた html をテーマディレクトリに出力
file_put_contents('/var/www/wordpress/wp-content/themes/hoge/google-analytics.html', $html);

ざっくり解説すると

  1. Google Analytisc API から前日の PV 数 上位 6 記事の情報を取得
  2. API から取得できる URL 情報を使って WordPress 記事の postId を取り出し
  3. postId を利用して記事の情報(タイトルとかサムネイル画像とか)を取得
  4. ランキング用の html をテーマディレクトリ直下にファイル出力

WordPress テーマの sidebar.php などで作成した html ファイルを読み込みます

<?php require __DIR__ . '/google-analytics.html'; ?>

cron 設定

ランキング作成プログラムを cron に設定します。夜中の 1 時に起動する設定にしています。

# 夜中の 1 時に起動
0 1 * * * /usr/bin/php /var/www/cron/google-analytics-api.php

まとめ

  • Google Analytisc API から前日の PV 数 上位 6 記事の情報を取得
  • ランキング html を作成してファイル出力
  • サイドバーで html ファイル読み込み
  • プログラムを cron に設定

Google Analytics API から取得したデータを使って WordPress のサイドバーにアクセスランキングを表示する方法を紹介しました。プラグインに頼らず、Google Analytics のアクセス解析情報からランキングを作成したい方は試してみてください。

2014年8月12日追記。さらに発展させて、カテゴリ別の人気記事を表示してみました。

[WordPress] Google Analytics APIを使いカテゴリ別ランキングを表示する

-技術ブログ
-