今回取得したコード
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件終わり?>