説明
について wpforms_process_complete
アクションは、(成功した)フォーム入力処理の一番最後に実行される。
パラメータ
- フィールド
- (配列) サニタイズされたエントリーフィールドの値/プロパティ。
- エントリー
- (配列) オリジナルの $_POST グローバル。
- フォームデータ
- (配列) 処理済みのフォーム設定/データ。
- $entry_id
- (int) エントリーID。エントリの保存が無効であるか、WPForms Lite を使用している場合は 0 を返します。
ソース
wpforms/includes/class-process.php
詳細情報
について wpforms_process_complete
フックはフォーム処理の一番最後に発火します。エントリーが成功し、エラーが含まれていない場合にのみ発生します。エントリーのデータベースへの保存とメール通知の送信は、このフックが実行される前に行われます。
カスタムAPIインテグレーションを構築する場合や、エントリーが正常に送信された後に何らかのアクションを実行する必要がある場合によく使われる選択です(カスタムメール通知の送信、投稿やユーザーアカウントの作成など)。
このフックの別バージョンは、フォームIDで簡単に制限できる、 wpforms_process_complete_{$form_id}
.
重要な注意: 処理をしていて、エラーを返してフォームの処理を防ぐ必要がある場合は、代わりにwpforms_processフックを使ってください。
例
例については、Bill EricksonのIntegrating your contact form with external servicesを参照してください。
フォームIDを 5
をターゲットとするフォームIDに設定します。
/** * This will fire at the very end of a (successful) form entry. * * @link https://wpforms.com/developers/wpforms_process_complete/ * * @param array $fields Sanitized entry field values/properties. * @param array $entry Original $_POST global. * @param array $form_data Form data and settings. * @param int $entry_id Entry ID. Will return 0 if entry storage is disabled or using WPForms Lite. */ function wpf_dev_process_complete( $fields, $entry, $form_data, $entry_id ) { // Optional, you can limit to specific forms. Below, we restrict output to // form #5. if ( absint( $form_data[ 'id' ] ) !== 5 ) { return; } // Get the full entry object $entry = wpforms()->entry->get( $entry_id ); // Fields are in JSON, so we decode to an array $entry_fields = json_decode( $entry->fields, true ); // Check to see if user selected 'yes' for callback if($entry_fields[6][ 'value' ] === 'Yes') { // Set the hidden field to 'Needs Callback' to filter through entries $entry_fields[7][ 'value' ] = 'Needs Callback'; } // Convert back to json $entry_fields = json_encode( $entry_fields ); // Save changes wpforms()->entry->update( $entry_id, array( 'fields' => $entry_fields ), '', '', array( 'cap' => false ) ); } add_action( 'wpforms_process_complete', 'wpf_dev_process_complete', 10, 4 );