概要
wpforms_frontend_form_action
は、WPFormsプラグインにおいて、フロントエンドフォームのアクションを処理するためのフックです。このアクションは以下のような機能を実装する際によく使われます:
- フォーム送信後のカスタム処理
- サードパーティサービスへのデータ送信
- フォームのフィールドのバリデーション
- メール通知のカスタマイズ
- データベースへのデータ保存
- ユーザーインターフェースのフィードバック表示
構文
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/