GoogleGraphとAdvanced Custom Fieldsを使って、数値自動挿入グラフを作成する方法
プラグインのインストール
まず、プラグインを入れましょう。
GoogleGraphダウンロード
カスタムフィールドといえば、こちら。
入れましょう。
Advanced Custom Fieldsダウンロード
自分はRepeater Fieldを使って、株価情報みたいなものをまとめています。
詳しくはこちら。
カスタム投稿必要なし!WordPressで出勤管理表を作る方法
数値の準備
僕の場合、数値を集計するうえで、以下の画像のような入力フォームを準備しています。
内容としては、以下の通りです。
第一階層
用途:銘柄ごとに増やすリピートフィールド
フィールド順序:1
フィールドラベル:group
フィールド名:group
フィールドタイプ:Repeater
第二階層(第一階層のリピーター内に入る)
用途:銘柄引用
フィールド順序:1
フィールドラベル:brand
フィールド名:brand
フィールドタイプ:投稿オブジェクト(post_object)
フィールド順序:2
用途:それぞれ日毎の株価を入力するためのリピートフィールド
フィールドラベル:price_g
フィールド名:price_g
フィールドタイプ:Repeater
第三階層(第二階層のリピーター内に入る)
用途:株価の該当日
フィールド順序:1
フィールドラベル:days
フィールド名:days
フィールドタイプ:デイトピッカー(date_picker)
※フォーマットを保存する:yymmdd
※表示フォーマット:yy/mm/dd
用途:株価入力フォーム
フィールド順序:2
フィールドラベル:price
フィールド名:price
フィールドタイプ:数値
家計簿でもなんでも、数値を日毎に入力するフォームが必要となりますが、概ねが以上のようなものです。
コードを作成
ここからが結構ややこしいです。
まずは、配列をはがして、カンマ区切りする必要があります。
該当PHP (single.php等)
<?php while(has_sub_field('group')){ $_post = get_sub_field('brand'); /*グラフ用銘柄取得*/ if($brand_title){ $brand_title .= ',"'.get_the_title($_post->ID).'"'; }else{ $brand_title = '"'.get_the_title($_post->ID).'"'; } while(has_sub_field('price_g')){ /*グラフ用株価取得*/ $brand_price[get_sub_field('days')][] = get_sub_field('price'); } } ?>
以上で、$brand_priceという変数に、グラフ用の数値が配列化して代入されました。
あとは、その数値をグラフ用にカンマ区切りにして出力するだけです。
以下。
foreach($brand_price as $key => $value){ $price_parts = ""; foreach($value as $val){ if($price_parts){ $price_parts .= ','.$val; }else{ $price_parts = $val; } } $brand_price_all .= '["'.$key.'",'.$price_parts.'],'; } $legend = "{position: 'top', maxLines:1}"; $vaxis = "{title: '株価', titleTextStyle: {color: 'black'}}"; $haxis = "{title: '期間', titleTextStyle: {color: 'black'}}"; echo do_shortcode(' [lineChart width="100%" legend="'.$legend.'" vaxis="'.$vaxis.'" haxis="'.$haxis.'" curvetype="none"] ["日付", '.$brand_title.'],'.$brand_price_all.' [/lineChart] '); ?>
多分ですが、もっと最適化できると思いますが、自己流で表示できたので、良しとします。
というわけで、以上の方法で表示した例が以下のものです。
2015年3月 第3週 | 低位株日記
総括
このプラグインは色々なところで紹介されていましたが、どれも自分で手入力する方法しかなかったので、自作ものとして紹介しました。
グラフなんて、毎度利用するものでもないのでしょうが、あったら会ったで便利でしょう?と。
それでは。