ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

説明

wpforms_process_before アクションは、フォームの送信ボタンがクリックされた後に発生しますが、フォームデータが検証またはクリーニングされる前です。

パラメーター

$entry
(array) 未検証のエントリデータ。
$form_data
(配列)  後で使用するために処理および準備されたフォーム設定/データ。

ソース

wpforms/includes/class-process.php

詳細情報

このアクションは、フォームの送信ボタンがクリックされてからほぼ直後に発生し、エントリの検証が行われる前です。この時点ではエントリデータは検証またはクリーニングされていないため、このフックは注意して使用してください

以下のスニペットは、このフックに含まれるパラメータの詳細を示しています(それぞれに追加のフィルターオプションが含まれています)。

$entry = apply_filters( 'wpforms_process_before_filter', $entry, $form_data );

$form_data = apply_filters( 'wpforms_process_before_form_data', wpforms_decode( $form->post_content ), $entry );

たとえば、すべてのフォームエントリをCRMに保存し、完全に処理されるまで「失敗」としてタグ付けしたい場合があります。その後、後続のフックのいずれかを使用して、その「失敗」タグを削除し、「完了」に更新することができます。

このフックはデータが検証される前に使用されることを覚えておいてください。そのため、このフックは注意して使用してください。

コードを実行したい特定のフォームIDに合わせて、フォームIDを5から変更することを忘れないでください。または、すべてのWPFormsで実行したい場合は、すべて削除してください。

/**
 * This action fires almost immediately after the form’s submit button is clicked, before validation takes place for the entry.
 *
 * @link  https://wpforms.com/developers/wpforms_process_before/
 *
 * @param array  $entry     Unvalidated entry data.
 * @param array  $form_data Form data and settings.
 */

function wpf_dev_process_before( $entry, $form_data ) {

	// Only run on my form with ID = 5
	if ( absint( $form_data[ 'id' ] ) !== 5 ) {
        return;
    } 

	// place your custom code here
}
add_action( 'wpforms_process_before', 'wpf_dev_process_before', 10, 2 );