今回取得したコード
get_the_date('');
ループ内に
<?php $days[] = $day; ?>
としてループ終わって、
<?php echo implode( '","', $days )//区切り文字指定 ?>
で区切って出す。
if have post 前に
$i = 0; を設置し
end wihle前に
$i++;//繰り返すごとに$iに数値が1つづ増える
を設置して
ループ後
記事の回数を測る。
if($i > 1): //記事が一件以上だったら
など分岐可能
date_query
参考http://elearn.jp/wpman/column/c20131030_01.html
'relation'=>'OR',で
今日の記事が含まれない場合
指定する
チャートjs 折れ線
参考http://log.noiretaya.com/238
体重の現象を測るために
前日の体重を取得するために
php 配列 最後から2番目を取得したい
array_slice(array,start,length,preserve)
参考 http://memopad.bitter.jp/w3c/php/func_array_slice.html
具体
省略
//ポイントは[0]
<?php $day_weights2[] = $day_weight . ','; ?>
<span style="color: #33CC99">前回比 :
<?php
$weight2 = array_slice($day_weights,-2,1);
?>
<?php if($weight_now > $weight2[0]){
echo "-";
}?>
<?php
$weight_d = $weight_now - $weight2[0];
echo $weight_d
?>kg</span>
<!----テスト------->
<?php
//折れ線グラフへカスタムフィールドの値と日付を入れる。
//投稿日取得
$today30 = get_the_date('Y/m/d h:i:s');
$post_y = get_the_date('Y');
$post_m = get_the_date('m');
$post_d = get_the_date('d');
$args = array(
'cat' => 190,
'posts_per_page' => 19,
//'orderby' => 'date',
'order' => 'ASC',
'date_query' => array(
'relation'=>'OR',
array( //投稿日の記事
'year' => $post_y,
'month' => $post_m,
'day' => $post_d,
),
array( //投稿日以前の記事
'before' => $today30,
'inclusive' => true,
'compare' => '>=',
),
),
);
query_posts( $args );
?>
<?php $i = 0;
//1個では折れ線がバグルので記事1個の時は出さないため記事カウント?>
<?php
if ( have_posts () ) :
while ( have_posts() ) :
the_post();
?>
<?php $day = get_the_date('m/d'); ?>
<?php $days[] = $day; ?>
<?php $day_weight = get_post_meta($post->ID,"weight",true); ?>
<?php $day_weights[] = $day_weight; ?>
<?php $day_weights2[] = $day_weight . ','; ?>
<?php $go_weight = '62'; ?>
<?php $go_weights[] = $go_weight; ?>
<?php
$i++;//繰り返すごとに$iに数値が1つづ増える
endwhile;
else:?>
<?php
endif;
?>
<?php wp_reset_query(); ?>
<?php if($i > 1): //記事が一件以上だったら
?>
<div class="weight_chart_single">
<canvas id="canvas"
width="400" height="240"></canvas>
<div class="weight_go">
目 標 体 重
</div>
</div>
<!----/テスト------->
<script>
//最新30日のダイエットを取得して フォーチで入れ込む
// window.onload = function(){
var lineChartData =
{
labels : ["<?php echo implode( '","', $days )//区切り文字指定 ?>"], //ここ日付を取得して入れる
datasets : [
//目標値用
{
fillColor : "rgba(255,0,0,0)",
strokeColor : "rgba(255,0,0,1.0)",
pointColor : "rgba(255,0,0,1.0)",
pointStrokeColor : "rgba(255,0,0,1.0)",
data : [<?php echo implode( ',', $day_weights )//区切り文字指定 ?>] //ここ-体重を取得して入れる
},
{
fillColor : "rgba(38,181,229,0.3)",
strokeColor : "rgba(38,181,229,0.3)",
pointColor : "rgba(38,181,229,1)",
pointStrokeColor : "rgba(38,181,229,1)",
data : [<?php echo implode( ',', $go_weights )//区切り文字指定 ?>] //ここ-目標体重を記事数分取得して入れる
}
]
}
var options = {
// X, Y 軸ラインが棒グラフの値の上にかぶさるようにするか
scaleOverlay : true,
// 値の開始値などを自分で設定するか
scaleOverride : true,
// 以下の 3 オプションは scaleOverride: true の時に使用
// Y 軸の値のステップ数
// e.g. 10 なら Y 軸の値は 10 個表示される
scaleSteps : 13,
// Y 軸の値のステップする大きさ
// e.g. 10 なら 0, 10, 20, 30 のように増えていく
scaleStepWidth : 1,
// Y 軸の値の始まりの値
scaleStartValue : 60,
// ラインが曲線 ( true ) か直線 ( false )か
bezierCurve : false,
// ポイントの点を表示するか
pointDot : true,
// ポイントの点の大きさ
pointDotRadius : 2,
// ポイントの点の枠線の幅
pointDotStrokeWidth : 1,
// データセットのストロークを表示するか
// みたいですが、ちょっと変化が分からなかったです
datasetStroke : false,
// ラインの幅
datasetStrokeWidth : 1,
// ラインの内側を塗りつぶすか
datasetFill : true,
// 表示の時のアニメーション
animation : false,
// アニメーションの速度 ( ステップ数 )
animationSteps : 60,
// アニメーションの種類, 以下が用意されている
// linear, easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic,
// easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint,
// easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine,
// easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc,
// easeInElastic, easeOutElastic, easeInOutElastic, easeInBack, easeOutBack,
// easeInOutBack, easeInBounce, easeOutBounce, easeInOutBounce
animationEasing : "easeInOutCubic",
// ラベルの表示 ( Y 軸の値 )
scaleShowLabels : true,
// ラベルの表示フォーマット ( Y 軸の値 )
scaleLabel : "<%=value%> kg",
// X, Y 軸値のフォントサイズ
scaleFontSize : 10,
}
// function show() {
var chart = new Chart(document.getElementById("canvas").getContext("2d")).Line(lineChartData, options);
// }
// show();
//}
</script>
<?php endif; //記事が1件終わり?>
<div class="weight_box_single">
<h2 class="weight_h">体重計</h2><span style="color:#FF0000;">
今日の体重 : <span style="font-size:20px;"><?php $weight_now = get_post_meta($post->ID,"weight",true);
echo $weight_now
?>kg</span></span><br />
目標まであと: <span style="font-size:20px;"><?php
$weight_base = 62.0;
$weight_sa = $weight_now - $weight_base;
echo $weight_sa?>kg</span> <br />開始 : 72.0kg <br /><span style="color:#2EA7E0;">目標 : 62.0kg </span><br /><span style="color: #33CC99">総減量 :
<?php
$weight_d = $weight_now - 72.0;
echo $weight_d
?>kg</span>
<br /><span style="color: #33CC99">前回比 :
<?php ?>
<?php
$weight2 = array_slice($day_weights,-2,1);
?>
<?php if($weight_now > $weight2[0]){
echo "-";
}?>
<?php
$weight_d = $weight_now - $weight2[0];
echo $weight_d
?>kg</span>
</div>
<?php if($i > 1): //記事が一件以上だったら
?>
<div style="clear:both;"></div>
<?php endif; //記事が1件終わり?>