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

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テキストで設定すれば、グラフの内容を自由に設定することも可能です。

RECOMMEND

CONTACT

Webサイト作成は、是非
CXG DESIGNへご検討ください。