プラグインAdvanced custom fields(ACF)のacf/input/form_dataアクションの使用方法・解説

概要

acf/input/form_data は、ACF が各フォームに必要な非表示の入力を生成した後に発生するアクションです。このアクションは、フォームデータが出力される前に特定の処理を行うために使用されます。典型的な使用例としては、カスタムフィールドの値を修正したり、追加の入力要素を挿入したり、セキュリティトークンを追加したりすることがあります。

以下のような機能を実装する際によく使われます:
1. フォームのカスタマイズ
2. 特定条件下でのフィールドの表示制御
3. カスタムバリデーションの追加
4. トランスレーション要素の追加
5. セキュリティ対策の強化
6. フォーム送信後のデータ処理

構文

add_action('acf/input/form_data', 'your_function_name');

パラメータ

  • $form: ACF フォームの情報を含む配列。

戻り値

このアクションには戻り値がなく、主に副作用に基づいて機能します。

対応するバージョン

  • Advanced Custom Fields (ACF) バージョン: 5.0.0 以降
  • WordPress バージョン: 4.0 以降

サンプルコード

サンプル1: フォームにカスタムCSSクラスを追加

このサンプルコードは、特定の条件に応じてフォームにカスタムクラスを追加します。

add_action('acf/input/form_data', function($form) {
    $form['class'] .= ' my-custom-class';
});

サンプル2: フォームに特定のフィールドを追加

このサンプルは、フォームの中にカスタムフィールドを追加する方法を示しています。

add_action('acf/input/form_data', function($form) {
    if($form['form_id'] == 'my_form') {
        echo '<input type="hidden" name="my_hidden_field" value="some_value">';
    }
});

サンプル3: フォーム送信時にデータを検証する

この例では、フォームが送信された際にカスタム検証を行います。

add_action('acf/input/form_data', function($form) {
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (empty($_POST['required_field'])) {
            // エラーメッセージを表示
            echo '<div class="error">Required field is empty</div>';
        }
    }
});

サンプル4: フォームにセキュリティトークンを追加

このコードは、CSRF対策としてフォームにセキュリティトークンを追加します。

add_action('acf/input/form_data', function($form) {
    echo '<input type="hidden" name="security_token" value="' . wp_create_nonce('my_security_action') . '">';
});

サンプル5: フォーム表示前にデフォルト値を設定

このサンプルは、フォームが表示される前にデフォルト値を設定します。

add_action('acf/input/form_data', function($form) {
    update_field('my_field', 'Default Value', $form['id']);
});

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

この関数について質問する


上の計算式の答えを入力してください