ACFの範囲で、Charts.cssを利用して棒グラフを作成

  • Plugin
  • ACFには、数字の範囲を設定することができる、範囲フィールドがあります。今回は、ACF範囲で、Chart.cssを利用して棒グラフを作成する方法を紹介します。

     出典 : Charts.css

    今回のDEMOは、年齢分布の棒グラフです。

    範囲を入力すると、年代ごとの棒グラフが表示されるように設定しました。

    ACF設定

    まず、最大値フィールドを作成します。フィールドタイプは、範囲です。フィールドラベルに、編集画面に表示する名前、フィールド名にPHPに記入する名前を設定します。初期値は、100に設定します。

    フィールドタイプは、範囲初期値は、100に設定

    項目設定値
    フィールドタイプ範囲
    フィールドラベルMAX
    フィールド名add_max
    初期値100

    次に年代別のフィールドを作成します。まず、10代未満です。フィールドタイプは、範囲です。フィールドラベルに、編集画面に表示する名前、フィールド名PHPに記入する名前を設定します。初期値は、0に設定します。

    初期値は、0に設定

    項目設定値
    フィールドタイプ範囲
    フィールドラベル10代未満
    フィールド名add_age00
    初期値0

    残りの年代別フィールドも、同じように作成します。これで、ACFの設定は終了です。

    残りの年代別フィールドも、同じように作成

    コード

    シングルページループ内に、下記コードを入力します。

    <table class="charttable charts-css bar multiple stacked show-heading show-labels data-spacing-10  ">
    	<caption><b>AGE DISTRIBUTION CHART</b></caption>
    	<?php if (get_field('add_age00')): ?>
    		<tr>
    			<th>10代未満</th>
    			<td style="--size: calc(<?php the_field('add_age00'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age00'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age10')): ?>
    		<tr>
    			<th>10代</th>
    			<td style="--size: calc(<?php the_field('add_age10'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age10'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age20')): ?>
    		<tr>
    			<th>20代</th>
    			<td style="--size: calc(<?php the_field('add_age20'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age20'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age30')): ?>
    		<tr>
    			<th>30代</th>
    			<td style="--size: calc(<?php the_field('add_age30'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age30'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age40')): ?>
    		<tr>
    			<th>40代</th>
    			<td style="--size: calc(<?php the_field('add_age40'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age40'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age50')): ?>
    		<tr>
    			<th>50代</th>
    			<td style="--size: calc(<?php the_field('add_age50'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age50'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age60')): ?>
    		<tr>
    			<th>60代</th>
    			<td style="--size: calc(<?php the_field('add_age60'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age60'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age70')): ?>
    		<tr>
    			<th>70代</th>
    			<td style="--size: calc(<?php the_field('add_age70'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age70'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    	<?php if (get_field('add_age80')): ?>
    		<tr>
    			<th>80代以上</th>
    			<td style="--size: calc(<?php the_field('add_age80'); ?> / <?php the_field('add_max'); ?>); --color: #bbb;"><?php the_field('add_age80'); ?>%  </td>
    		</tr>
    	<?php endif ?>
    </table>

    Charts.cssのサイトから、charts.min.cssをダウンロードし、読み込みます。CSSでスタイルを整えます。

    .charttable {
    	width: 90%;
    	margin: auto;
    	max-width: 1200px;
    	padding: 10em 0;
    	font-size: 0.9em;
    }
    
    .charttable th {
    	font-weight: 500;
    }
    
    .charttable caption {
    	font-size: 2em;
    	height: 3em;
    }

    設置

    編集画面に、ACF チャートフィールドが作成されます。まず、最大値を設定するため、MAX最大値を設定します。同じ値を最大値となる60代に設定します。

    残りの年代のフィールドにそれぞれ数値を合計が、100となるように設定します。これで、設定終了です。

    編集画面に、ACF チャートフィールドが作成

    MAX最大値を設定。同じ値を最大値となる60代に設定

    残りの年代にそれぞれ数値を設定

    以上で今回の説明は終了です。数値のみで、グラフが作成できるので簡単ですね。また、キャプション、項目をACFテキストで設定すれば、グラフの内容を自由に設定することも可能です。