ACFフィールド表示の際のエスケープ処理
エスケープ処理とは、入力や外部ソースから取得したデータに対して、HTMLやJavaScriptコードとして解釈されないように無害化する処理のことです。
エスケープ処理されていない場合、攻撃者がスクリプトを埋め込むことができ、悪意のあるコードが実行されることがあります。
esc_html()
esc_html()関数は、HTMLタグを文字列として表示する際に使います。
テキストフィールドの場合
<?php
$user_input = get_field('user_input');
echo '<p>' . esc_html($user_input) . '</p>'; // エスケープして表示
?>
ラジオボタン(radio)の場合
<?php
$product_color = get_field('product_color'); // 'product_color' はラジオボタンのフィールド名
if ($product_color) {
echo '<p>選択された色: ' . esc_html($product_color) . '</p>'; // エスケープして表示
}
?>
ドロップダウンリスト(select)の場合
<?php
$shipping_method = get_field('shipping_method'); // 'shipping_method' はドロップダウンリストのフィールド名
if ($shipping_method) {
echo '<p>選択された配送方法: ' . esc_html($shipping_method) . '</p>'; // エスケープして表示
}
?>
チェックボックス(checkbox)の場合
チェックボックスの場合、複数の値が配列で返されることがあります。選択された値をすべて表示する場合、配列をループして表示し、各値に対してesc_html()を適用します。
<?php
$features = get_field('product_features'); // 'product_features' はチェックボックスのフィールド名
if ($features) {
echo '<ul>';
foreach ($features as $feature) {
echo '<li>' . esc_html($feature) . '</li>'; // エスケープして表示
}
echo '</ul>';
}
?>
esc_url()
esc_url()関数は、URLを安全に表示するために使います。
リンクのURLを表示する場合
<?php
$website_url = get_field('website_url');
echo '<a href="' . esc_url($website_url) . '">詳しくはこちら</a>'; // エスケープして表示
画像のURLを表示する場合
<?php
$image_url = get_field('product_image'); // 画像のURL
echo '<img src="' . esc_url($image_url) . '" alt="製品画像">'; // エスケープして表示
