プラグインWPFormsのwpforms_frontend_form_actionアクションの使用方法・解説

概要

wpforms_frontend_form_actionは、WPFormsプラグインにおいて、フロントエンドフォームのアクションを処理するためのフックです。このアクションは以下のような機能を実装する際によく使われます:

  1. フォーム送信後のカスタム処理
  2. サードパーティサービスへのデータ送信
  3. フォームのフィールドのバリデーション
  4. メール通知のカスタマイズ
  5. データベースへのデータ保存
  6. ユーザーインターフェースのフィードバック表示

構文

do_action( 'wpforms_frontend_form_action', $form_data, $form_id, $form_settings );

パラメータ

  • $form_data: 提出されたフォームのデータを含む配列。
  • $form_id: 処理するフォームのID。
  • $form_settings: フォームの設定に関する情報を含む配列。

戻り値

このアクションは特に戻り値を持たない。

互換性

  • WPFormsバージョン: 1.0以上
  • WordPressバージョン: 4.0以上

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

アクション 使用例
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

サンプルコード

サンプル1: フォーム送信後のカスタムメッセージ表示

このコードは、WPFormsのフォーム送信後にカスタムメッセージを表示します。

add_action( 'wpforms_frontend_form_action', 'custom_form_success_message', 10, 3 );

function custom_form_success_message( $form_data, $form_id, $form_settings ) {
    if ( ! empty( $form_data ) ) {
        echo '<div class="custom-success-message">フォームが正常に送信されました!</div>';
    }
}

引用元: https://wpforms.com/developers/wpforms_frontend_form_action/

サンプル2: フォームデータを外部APIに送信

このコードは、フォームデータを外部のAPIに送信します。

add_action( 'wpforms_frontend_form_action', 'send_data_to_external_api', 10, 3 );

function send_data_to_external_api( $form_data, $form_id, $form_settings ) {
    $response = wp_remote_post( 'https://example.com/api', array(
        'body' => json_encode( $form_data ),
        'headers' => array( 'Content-Type' => 'application/json' ),
    ));
}

引用元: https://wpforms.com/developers/wpforms_frontend_form_action/

サンプル3: フォームフィールドのカスタムバリデーション

このコードは、特定のフィールドにカスタムバリデーションを追加します。

add_action( 'wpforms_frontend_form_action', 'custom_field_validation', 10, 3 );

function custom_field_validation( $form_data, $form_id, $form_settings ) {
    if ( ! filter_var( $form_data['fields'][1]['value'], FILTER_VALIDATE_EMAIL ) ) {
        wpforms()->process->errors[ $form_id ]['fields'][1] = '有効なメールアドレスを入力してください。';
    }
}

引用元: https://wpforms.com/developers/wpforms_frontend_form_action/

サンプル4: メール通知のカスタマイズ

このコードは、フォーム送信時に送信されるメール通知をカスタマイズします。

add_action( 'wpforms_frontend_form_action', 'custom_email_notification', 10, 3 );

function custom_email_notification( $form_data, $form_id, $form_settings ) {
    $to = 'admin@example.com';
    $subject = '新しいフォーム送信';
    $body = '新しい送信がありました。詳細: ' . print_r( $form_data, true );
    wp_mail( $to, $subject, $body );
}

引用元: https://wpforms.com/developers/wpforms_frontend_form_action/

サンプル5: データベースへの保存処理

このコードは、送信されたフォームデータをカスタムデータベーステーブルに保存します。

add_action( 'wpforms_frontend_form_action', 'save_form_data_to_db', 10, 3 );

function save_form_data_to_db( $form_data, $form_id, $form_settings ) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_form_data';
    $wpdb->insert( $table_name, array(
        'name' => $form_data['fields'][0]['value'],
        'email' => $form_data['fields'][1]['value'],
        'submitted_at' => current_time( 'mysql' ),
    ));
}

引用元: https://wpforms.com/developers/wpforms_frontend_form_action/

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


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