人気記事ランキングをPV順に表示したい!と、ふと思い立って設置してみました。
使ったのはGAPI(Google Analytics Data Export APIのクラスライブラリ)。
過去30日間をPV順にソートし、
ディメンションga:pageTitleを使って(not set)のPVを除外し、
str_replace() でサイトのタイトルを削除(置換)してみました。
…ちなみに、、、拙い知識で設定した結果なので、
もし間違っていたら、どなたか教えてください…。
(私、phpワカラナイー!)
GAPIをダウンロード
gapi-1.3.zipをダウンロードします。
テーマフォルダ内に「gapi」というフォルダを作って、
この2つのデータを保存します。
(残りは使いません)
- example.report.php
- gapi.class.php
カスタマイズ
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-*****ではありません!
取得するデータとソート(並び替え)
array('pageTitle','pagePath'), /* ディメンション(タイトルとURL) */
array('pageviews'), /* 指標(ページビュ) */
'-pageviews', /* ページビューでソート */
この部分では、データの取得と並び順の指定をしています。
ディメンションでは「ページタイトル」と「ページURL」、
指標では「ページビュー」を取得しています。
ディメンションと指標の違いが分からない人はこちら!
ディメンションと指標の違いを理解する[第9回]
「-pageviews」は、ページビューを降順で表示、という意味です。
デフォルトは昇順なので、-(マイナス)を取ると昇順になります。
これら以外にも、色々なデータを取得できるので、
気になる人はこちらのリファレンスページを見てみてください。
フィルター
$filter = 'ga:pagePath=~^/. && ga:pageTitle!@(not set)', /* フィルター */
取得するデータに、フィルターをかける事が出来ます。
「$filter = ‘ga:pagePath=~^/.」に加えて、
「ga:pageTitle(タイトル)」に「(not set)」が入っていないものを取得する、
という条件をフィルターに追加しました。
なぜか、(not set)のデータが分かれて表示されてしまったので、
このフォルターを追加しました。
こちらのページに、フィルターについて色々書いてあるので、
他にフィルターを設定したい人はこちらのリファレンスを見てください。
レポートの期間
$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
COMMENTS
Facebookアカウントを使用しないコメントの書き込みはこちらからどうぞ!
Trackback URL