CHIPS

制作チップス

ACFフィールド表示の際のエスケープ処理

2025年6月24日

カテゴリー: 制作チップス

エスケープ処理とは、入力や外部ソースから取得したデータに対して、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="製品画像">'; // エスケープして表示