<html lang="ja-jp" dir="ltr"><head></head><body>### [wpforms_process](https://wpforms.com/developers/wpforms_process/)

**公開日:** 2021年2月12日
**著者:** エディトリアルチーム

**抜粋:** 初期フィールド検証が完了した後、フォームエントリ処理中にトリガーされるアクション。


**コンテンツ:**

## 説明

初期フィールド検証が完了した後、フォームエントリ処理中にトリガーされるアクション。

## パラメータ

$fields*配列* サニタイズされたエントリフィールドの値/プロパティ.$entry*配列* 元の $\_POST グローバル.$form\_data*配列* フォームの設定/データ。## ソース

`wpforms/includes/class-process.php`

## 詳細情報

`wpforms_process` アクションは、フォームエントリ処理の終盤でトリガーされます。すべての初期フォームフィールドが検証およびサニタイズされた後に実行されます。

このフックは、アクションがエラーを返し、フォーム処理を停止する必要がある場合に使用する必要があります（詳細は以下の**例**を参照してください）。

例：ユーザーアカウントが存在するかどうかを確認する、または決済ゲートウェイのデータを検証する。

このフックがトリガーされた後でも、同じフックを使用する他のコードによってフォーム処理が停止/防止される可能性があることに注意してください。

**すべての**検証が完了した後にトリガーされる、類似の別のフックに関する以下の注記を参照してください。

**重要事項:** 検証が不要な場合やエントリIDが必要ない処理を行っている場合は、[wpforms\_process\_complete](https://wpforms.com/developers/wpforms_process_complete/ "wpforms_process_complete") を参照してください。

## 例

例のコードでは、まずフォームIDを確認して、対象のフォームと一致するかどうかを確認しています。次に、特定のフィールド（フィールドIDで）を確認して、それが空かどうかを確認しています。

フォームIDを `5` から実際のフォームIDに変更し、`'4'` を実際のフィールドIDに変更することを忘れないでください。

```

/**
 * 初期フィールド検証後にフォームエントリ処理中にトリガーされるアクション。
 *
 * @link   https://wpforms.com/developers/wpforms_process/
 *
 * @param  array  $fields    サニタイズされたエントリフィールドの値/プロパティ。
 * @param  array  $entry     元の $_POST グローバル。
 * @param  array  $form_data フォームデータと設定。
 */

function wpf_dev_process( $fields, $entry, $form_data ) {
     
    // オプション：特定のフォームに限定できます。以下では、フォームID #5 のみに限定しています。
    if ( absint( $form_data[ 'id' ] ) !== 5 ) {
        return $fields;
    }
     
    // フィールドID 4 が空かどうかを確認し、空の場合はエラーを実行します。
    if(empty( $fields[4][ 'value' ]) ) 
        {
            // グローバルエラーに追加します。これにより、データベースへのフォームエントリの保存が停止します。
            // エラーをフォームの上に表示する必要がある場合は、以下の行をコメント解除してください。
            // wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ][ 'header' ] = esc_html__( 'エラーが発生しました。', 'plugin-domain' );    
 
            // フィールドID 4 を確認し、フォームの上部と特定のフィールドの下にエラーメッセージを表示します。
               wpforms()-&gt;process-&gt;errors[ $form_data[ 'id' ] ] [ '4' ] = esc_html__( 'エラーが発生しました。', 'plugin-domain' );
 
            // 追加のロジックを追加します（エラーが表示されない場合の処理）。
        }
    }
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
```

## FAQ

#### Q: 2つの異なるフォームを対象にするにはどうすればよいですか？

**A:** この関数を一部のフォームのみで使用し、すべてではないようにしたい場合は、PHPで「**または**」を意味する記号を使用するだけです。

たとえば、上記のコードスニペットでは `if ( absint( $form_data[ 'id' ] ) !== 5 )` と表示されていますが、これはフォームID **5** のスニペットのみを実行することを意味します。しかし、この関数を実行したいフォームがいくつかある場合はどうでしょうか？

いくつかのオプションがあります。各オプションを以下に示します。

###### 1) 複数の関数を使用する

関数を複製して、関数に新しい名前を付け、フォームID番号を更新したい場合は、関数全体をコピー＆ペーストし、関数の先頭と末尾にある `wpf_dev_process` という名前を固有の名前に変更します。これは関数ファイルに多くの余分な行を追加するため、最もクリーンな方法ではありませんが、読みやすく、依然として効果的です。

###### 2) 追加のフォームIDを追加する

最も簡単な方法は、PHPステートメント `or` を使用し、追加のID番号を追加することです。PHPの「**または**」の記号は **||** です。たとえば、フォームID 5 とフォームID 7 を対象にしたい場合は、`if ( absint( $form_data[ 'id' ] ) !== 5 || $form_data[ 'id' ] ) !== 7)` のようになります。

## 参考記事

- [フォームでソーシャルメディアURLフィールドを検証する方法](https://wpforms.com/developers/how-to-validate-a-social-media-url-field-in-your-form/ "フォームでソーシャルメディアURLフィールドを検証する方法")
- [フォームの単一行テキストフィールドで数値を制限する方法](https://wpforms.com/developers/how-to-restrict-numbers-in-a-single-line-text-form-field/ "フォームの単一行テキストフィールドで数値を制限する方法")
- [日付ピッカーフォームフィールドに年齢制限を設ける方法](https://wpforms.com/developers/how-to-provide-an-age-restriction-on-the-datepicker-form-field/ "日付ピッカーフォームフィールドに年齢制限を設ける方法")
- [同じフォーム内で2つの日付を比較する方法](https://wpforms.com/developers/how-to-compare-two-dates-in-the-same-form/ "同じフォーム内で2つの日付を比較する方法")
- [フォームで郵便番号フィールド検証を追加する方法](https://wpforms.com/developers/how-to-add-zip-code-field-validation-on-your-forms/ "フォームで郵便番号フィールド検証を追加する方法")
- [WPForms内でフィールド比較を実行する方法](https://wpforms.com/developers/how-to-perform-field-comparisons-within-your-wpforms/ "WPForms内でフィールド比較を実行する方法")
- [Authorize.net用の住所フィールド検証を追加する方法](https://wpforms.com/developers/how-to-add-address-field-validation-for-authorize-net/ "Authorize.net用の住所フィールド検証を追加する方法")

**カテゴリ:** アクションフック

**タグ:** エントリ処理, PHP

---</body></html>