概要
wpforms_entry_save_args
フィルタは、WPFormsプラグインでフォームエントリーが保存される際に、その保存プロセスに影響を与えるために使用されます。このフックを利用することで、フォームデータの加工や条件に基づく処理を行うことができます。具体的には、以下のような機能を実装する際によく使われます。
- 入力データの検証
- フォームデータのカスタマイズ
- 外部APIとの連携
- データのログを記録
- セキュリティ対策としてのデータの操作
- メール通知のカスタマイズ
構文
add_filter( 'wpforms_entry_save_args', 'custom_save_args', 10, 3 );
function custom_save_args( $args, $form_data, $form ) {
// 処理内容
return $args;
}
パラメータ
$args
: 保存対象のエントリに関する情報を含む配列。$form_data
: フォームから送信されたデータを含む配列。$form
: 現在のフォームの情報。
戻り値
このフィルタは、変更されたエントリデータの配列を戻します。
使用可能なバージョン
- 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: フォームデータのカスタマイズ
add_filter( 'wpforms_entry_save_args', 'modify_form_data', 10, 3 );
function modify_form_data( $args, $form_data, $form ) {
if ( $form['id'] == 123 ) {
$args['fields'][1]['value'] = 'カスタムメッセージ';
}
return $args;
}
このコードは、特定のフォームIDに対して、最初のフィールドの値をカスタムメッセージに変更します。
サンプルコード2: 条件に基づくエントリの保存
add_filter( 'wpforms_entry_save_args', 'conditional_entry_save', 10, 3 );
function conditional_entry_save( $args, $form_data, $form ) {
if ( isset( $form_data['fields'][2]['value'] ) && $form_data['fields'][2]['value'] === '特定の値' ) {
$args['save'] = true; // エントリを保存する
} else {
$args['save'] = false; // エントリを保存しない
}
return $args;
}
このコードは、特定のフィールド値に基づいてエントリの保存を条件付けています。
サンプルコード3: 外部APIへのデータ送信
add_filter( 'wpforms_entry_save_args', 'send_data_to_api', 10, 3 );
function send_data_to_api( $args, $form_data, $form ) {
$api_url = 'https://example.com/api';
wp_remote_post( $api_url, array(
'body' => json_encode( $form_data ),
));
return $args;
}
このコードは、フォームデータを外部APIに送信する処理を追加します。
サンプルコード4: ログの記録
add_filter( 'wpforms_entry_save_args', 'log_form_entry', 10, 3 );
function log_form_entry( $args, $form_data, $form ) {
error_log( print_r( $form_data, true ) );
return $args;
}
このコードは、送信されたフォームデータをエラーログに記録します。
サンプルコード5: メール通知のカスタマイズ
add_filter( 'wpforms_entry_save_args', 'custom_email_notification', 10, 3 );
function custom_email_notification( $args, $form_data, $form ) {
if ( $form['id'] == 456 ) {
// 独自のメール通知ロジックをここに追加
add_filter( 'wpforms_notification', 'custom_notification_details', 10, 4 );
}
return $args;
}
このコードは、特定のフォームIDに対してカスタムメール通知処理を追加するロジックを導入しています。