このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

Google Chart APIで動的にグラフ生成

WordPress内のデータをGoogle Chart APIで動的にグラフ作成。

ふと急にGoogle Chart APIを使ってみたくなり、WordPress内のデータを使って動的にGoogle Chart APIでグラフを出力するテストをしてみた。

とりあえず、カテゴリごとの記事の割合をグラフにしてみる…こういう目的ならタグクラウドで十分な気もするけど、将来的に応用できそうなので、メモということで。

※先に言ってしまうと、Google Chart APIはまだ日本語対応が十分でなく、ひらがなとカタカナしか表示できません…しかもフォントも微妙。カテゴリースラッグにアルファベット入れてあれば下のコード内のnameの代わりにslagに差し替えて即使えます。


 
Google Chart API
※漢字が文字化け…こちらの開発メンバーによるコメントでは「取り組んでるけど、簡単じゃないよ」とのことです。。。

【追記 2008-12-11】
今は漢字に対応しているようですよ。試していませんが→
Google Chart API で漢字を含む日本語が通るようになった  れぶろぐ

ということで日本語はまだ使えないですが、以下解説。

■やっていること:
Google Chart APIは、imgタグのsrcにパラメータ付きのURLを埋め込んでやるだけで簡単にグラフ画像を取得できます(ユーザー登録など不要)。なので、そのURLのパラメータをつくってあげます。カテゴリごとの記事数を取得して、記事の総数に対するパーセンテージを割り出し、APIの書式に従って出力します。

■ソース:
ver.2.3以上(2.5で確認)

<?php
global $wpdb; 

//記事の総数を取得のため
$allposts = new WP_Query(“showposts=-1″);

$sql = “SELECT * FROM ” .$wpdb->terms .” t “;
$sql.= ” LEFT JOIN “.$wpdb->term_taxonomy .” tt ON t.term_id = tt.term_id “;
$sql.= ” WHERE tt.taxonomy != ‘link_category’ “;
$sql.= ” GROUP BY t.term_id “;
$sql.= ” ORDER BY tt.count DESC “;
$mycat = $wpdb->get_results($sql);

//カテゴリごとの記事数のパーセンテージを記事総数から割り出してカンマ区切りで並べる。
//同時に、対応するカテゴリ名を「|」区切りで並べる。
//カウントが0のカテゴリは拾わない。

for($i = 0; $i < count($mycat); $i++){
if ( $mycat[$i]->count != 0 ){
if ($i != 0 ){
$count = $count .”,”;
$cat_list = $cat_list .”%7C”;
}
//post_countで記事総数を取得
$count = $count .round($mycat[$i]->count / $allposts->post_count *100 );
$cat_list = $cat_list .$mycat[$i]->name;
}
}

$url =”<img src=’http://chart.apis.google.com/chart?”;
$url.=”cht=p”;
$url.=”&chtt=Google%20Chart%20TEST”;
$url.=”&chs=450×190″;
$url.=”&chd=t:” . $count; // ←カテゴリごとのパーセンテージを挿入
$url.=”&chco=0000ff”;
$url.=”&chl=” .$cat_list; // ←それぞれのカテゴリ名をラベルとして挿入
$url.=”‘ alt=’Google Chart TEST’ />”;

echo $url;

?>

■ver2.2以前(ME2.2.3で動作確認)※テーブル構造が違うため

<?php
global $wpdb; 

//記事の総数を取得のため
$allposts = new WP_Query(“showposts=-1″);

$sql = “SELECT * FROM ” .$wpdb->categories;
$sql.= ” ORDER BY category_count DESC “;
$mycat = $wpdb->get_results($sql);

//カテゴリごとの記事数のパーセンテージを記事総数から割り出してカンマ区切りで並べる。
//同時に、対応するカテゴリ名を「|」区切りで並べる。
//カウントが0のカテゴリは拾わない。

for($i = 0; $i < count($mycat); $i++){
if ($mycat[$i]->category_count != 0){
if ($i != 0 ){
$count = $count .”,”;
$cat_list = $cat_list .”%7C”;
}
//post_countで記事総数を取得
$count = $count .round($mycat[$i]->category_count / $allposts->post_count *100 );
$cat_list = $cat_list .$mycat[$i]->cat_name;
}
}

$url =”<img src=’http://chart.apis.google.com/chart?”;
$url.=”cht=p”;
$url.=”&chtt=Google%20Chart%20TEST”;
$url.=”&chs=450×190″;
$url.=”&chd=t:” . $count; // ←カテゴリごとのパーセンテージを挿入
$url.=”&chco=0000ff”;
$url.=”&chl=” .$cat_list; // ←それぞれのカテゴリ名をラベルとして挿入
$url.=”‘ alt=’Google Chart TEST’ />”;

echo $url;

?>

以上

■結果:
出力した結果は先の図…文字化けしています。カテゴリごとの記事のパーセンテージが円グラフになり、それぞれに対応するカテゴリ名がラベルとして出力されます。グラフの形や色などパラメータについてはこちらのDeveloper’s guideにいろいろ解説されています。

カスタムフィールドに設定した値を集計してあげれば、いろいろ応用できそうですね。ページごとのアクセス数の推移などもプラグインを併用すれば比較的簡単にグラフ化できそうです。そしてログインしたクライアントにのみ表示する、など。

参考記事)
Google Hacks: Pacman graph with Google Charts Matt Cutts: Gadgets, Google, and SEO (2008/4/24)
WEB API – Google Code Chart キター 404 Blog Not Found (2007/12/7)

このエントリーをはてなブックマークに追加

2件のコメントがありますコメントのRSSフィード

  1. Google Chart API で漢字が文字化け。

    こないだから、なんとなくいじいじしてるGoogle Chart API 。

    本日リアルタイムで変更が反映されるようにしました。

    って、onChangeイベントを全アクションに突っ込んだだけですけ…

  2. butaro より:

    カテゴリごとの記事の割合を自分もサイトに構築しようとプラグインを探していたんですが
    検索してたら、まさしくこのことですというサイトで必死になって読んでましたが
    素人の自分にはちょっとわからないことが多いいです。
    このPHPのコードを固定ページに貼っただけでは動かないですよね。。。。。
    お助けいただけると助かります。

コメント/質問お待ちしています

トラックバックURL:
http://wpcms.jp/199/trackback/

CATEGORY

ARCHIVE

2017年11月
« 12月    
 1234
567891011
12131415161718
19202122232425
2627282930