degico

Hi! I'm Yukari♡ Web Designer in Japan!

BLOG

google AnalyticsのAPI(GAPI)で、プラグインを使わずPV順に人気記事ランキングを表示する方法

人気記事ランキングをPV順に表示したい!と、ふと思い立って設置してみました。

使ったのはGAPI(Google Analytics Data Export APIのクラスライブラリ)。

過去30日間をPV順にソートし、
ディメンションga:pageTitleを使って(not set)のPVを除外し、
str_replace() でサイトのタイトルを削除(置換)してみました。

…ちなみに、、、拙い知識で設定した結果なので、
もし間違っていたら、どなたか教えてください…。
(私、phpワカラナイー!)

GAPIをダウンロード

gapi-1.3.zipをダウンロードします。

googleのAPI(GAPI)を利用して、プラグインを使わずに人気記事ランキングを表示する方法

テーマフォルダ内に「gapi」というフォルダを作って、
この2つのデータを保存します。
(残りは使いません)

  • example.report.php
  • gapi.class.php

googleのAPI(GAPI)を利用して、プラグインを使わずに人気記事ランキングを表示する方法

カスタマイズ

example.reportをまるっと、このように書き換えます。

<?php
define('ga_email','メールアドレス');
define('ga_password','パスワード');  
define('ga_profile_id','ビュー ID');  
require_once "gapi.class.php";  
$ga = new gapi(ga_email,ga_password);  
$ga->requestReportData(ga_profile_id,  
array('pageTitle','pagePath'), /* ディメンション(タイトルとURL) */
array('pageviews'), /* 指標(ページビュー) */
'-pageviews', /* ページビューでソート */
$filter = 'ga:pagePath=~^/. && ga:pageTitle!@(not set)', /* フィルター */ 
$start_date = date('Y-m-d', strtotime('-30 day')), /* レポートの開始日(30日前から) */ 
$end_date = date('Y-m-d', strtotime('-1 day')), /* レポートの終了日(前日まで) */   
$start_index = 1,  
$max_results=5); /* 表示件数 */
$results = Array(); ?> 
<ul>
<?php foreach($ga->getResults() as $result): ?>
<li>
<a href='<?php echo $siteURL ?><?php echo $result->getPagepath() ?>'><?php $postid = url_to_postid( $siteURL . $result->getPagepath() ); echo get_the_post_thumbnail($postid); ?></a>
<a href='<?php echo $siteURL ?><?php echo $result->getPagepath() ?>'><?php $getPagetitle = $result->getPagetitle(); echo str_replace( "除外したいテキスト", "", "$getPagetitle" ); ?></a>
<span><?php echo $result->getPageviews() ?> pv</span>
</li>
<?php endforeach ?>
</ul>

各部分について説明すると…。。

アカウントの設定

define('ga_email','メールアドレス');
define('ga_password','パスワード');  
define('ga_profile_id','ビュー ID');

この部分には、
データを取得したいアナリティクスアカウントの、メールアドレスとパスワードを入れてください。

4行目のビューIDは、
アナリティクス設定>ビュー>ビュー設定
から確認できます。
※UA-*****ではありません!

googleのAPI(GAPI)を利用して、プラグインを使わずに人気記事ランキングを表示する方法

googleのAPI(GAPI)を利用して、プラグインを使わずに人気記事ランキングを表示する方法

取得するデータとソート(並び替え)

array('pageTitle','pagePath'), /* ディメンション(タイトルとURL) */
array('pageviews'), /* 指標(ページビュ) */
'-pageviews', /* ページビューでソート */

この部分では、データの取得と並び順の指定をしています。

ディメンションでは「ページタイトル」と「ページURL」、
指標では「ページビュー」を取得しています。

ディメンションと指標の違いが分からない人はこちら!
ディメンションと指標の違いを理解する[第9回]

「-pageviews」は、ページビューを降順で表示、という意味です。

デフォルトは昇順なので、-(マイナス)を取ると昇順になります。

これら以外にも、色々なデータを取得できるので、
気になる人はこちらのリファレンスページを見てみてください。

ディメンションと指標のリファレンス

フィルター

$filter = 'ga:pagePath=~^/. && ga:pageTitle!@(not set)', /* フィルター */

取得するデータに、フィルターをかける事が出来ます。

「$filter = ‘ga:pagePath=~^/.」に加えて、
「ga:pageTitle(タイトル)」に「(not set)」が入っていないものを取得する、
という条件をフィルターに追加しました。

googleのAPI(GAPI)を利用して、プラグインを使わずに人気記事ランキングを表示する方法

なぜか、(not set)のデータが分かれて表示されてしまったので、
このフォルターを追加しました。

こちらのページに、フィルターについて色々書いてあるので、
他にフィルターを設定したい人はこちらのリファレンスを見てください。

GAPIフィルターコントロールの使い方(英語)

レポートの期間

$start_date = date('Y-m-d', strtotime('-30 day')), /* レポートの開始日(30日前から) */
$end_date = date('Y-m-d', strtotime('-1 day')), /* レポートの終了日(前日まで) */

レポートの取得期間の設定もできます。

例では30日前から前日までの期間になっていますが、
こんな感じで特定の日付なども設定できます。

$start_date = date('2012-01-01'),
$end_date = date('Y-m-d', strtotime('-1 day')),

こうすると、2012年1月1日から前日までとなります。

表示件数

$max_results=5); /* 表示件数 */

5件表示するようになっています。
表示させたい件数に書き換えてください。

表示部分のHTML

<ul>
<?php foreach($ga->getResults() as $result): ?>
<li>
<a href='<?php echo $siteURL ?><?php echo $result->getPagepath() ?>'><?php $postid = url_to_postid( $siteURL . $result->getPagepath() ); echo get_the_post_thumbnail($postid); ?></a>
<a href='<?php echo $siteURL ?><?php echo $result->getPagepath() ?>'><?php $getPagetitle = $result->getPagetitle(); echo str_replace( "除外したいテキスト", "", "$getPagetitle" ); ?></a>
<span><?php echo $result->getPageviews() ?> pv</span>
</li>
<?php endforeach ?>
</ul>

foreach~endforeach間がループされます。

$siteURL サイトのURL(ドメイン)
$result->getPagepath() ドメイン名以降のurl
getPagetitle() ページのタイトル
getPageviews() ページビュー

私はいつもwordpressでテーマを作る時に、

<title><?php the_title('', '┃'); ?><?php bloginfo('name'); ?></title>

というような設定にしているので、
getPagetitle()でページタイトルを吐き出すと、
「ページタイトル┃サイト名」と、いちいちサイト名が吐き出されてしまいます。

サイト名はいらないので、
str_replaceで”┃サイト名”の部分を””に置換して、削除してしまいました。

テンプレートで呼び出し

<?php include( TEMPLATEPATH . '/gapi/example.report.php' ); ?>

このタグを、表示させたい部分のテンプレートに追加して、
example.report.phpをインクルードします。

後は、通常のHTMLタグが吐き出されるので、
CSSで表示を調整して完成です♪

<参照元>
Movable Type (MT3でもそれ以外のバージョンでもok) に人気記事ランキングを表示する方法(GAPIを使用)
GAPI(Google Analytics APIのPHPライブラリ)|Google関連|Web関連特集|PHP & JavaScript Room

Similar Post

COMMENTS

Facebookアカウントを使用しないコメントの書き込みはこちらからどうぞ!

Leave a Reply

* が付いている項目は、必須項目です!

*

*(will not be published)

Trackback URL

: