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

**公開日:** 2020年4月22日
**著者:** エディトリアルチーム

**抜粋:** wpforms_process_filter は、すべてのフィールド検証とフォーマットデータの後に実行されます。


**コンテンツ:**

## 説明

`wpforms_process_filter` は、すべてのフィールド検証とフォーマットデータの後に実行されます。

## パラメータ

$fields*(array)* サニタイズされたエントリーフィールドの値/プロパティ。
$entry*(array)* 元の $\_POST グローバル。
$form\_data*(array)* 後で使用するために準備された、処理済みのフォーム設定/データ。
## ソース

`wpforms/includes/class-process.php`

## 詳細情報

このフィルターは、フィールドの検証とデータのフォーマットが完了した直後に実行されます。

## 例

フォームIDを **817** から対象のフォームIDに変更することを忘れないでください。

この例では、特定のフォームにレーティングフィールドが存在するかどうかを確認し、ユーザーがこのフィールドを完了しない場合に、レーティングをデフォルトで0に設定します。

```

/**
 * すべてのフィールド検証とフォーマットデータの後に実行されます。
 *
 * @link  https://wpforms.com/developers/wpforms_process_filter/
 *
 * @param  array  $fields     サニタイズされたエントリーフィールドの値/プロパティ。
 * @param  array  $entry      元の $_POST グローバル。
 * @param  array  $form_data  フォームデータと設定。
 *
 * @return array 
 */

function wpf_dev_process_filter( $fields, $entry, $form_data ) {
	
	$form_id = 817; // フォームIDを変更
	
	// フォームIDが一致しない場合は早期に終了
	if ( $form_data[ 'id' ] != $form_id ) {
		return $fields;
	}
	
	foreach ( $fields as $field ) {
		
		// フィールドタイプがレーティングで、空の場合は、値を0に設定します
		if ( $field[ 'type' ] == 'rating' &amp;&amp; empty( $field[ 'value' ] ) ) {
			
			$fields[$field[ 'id' ]][ 'value' ] = 0;
			
		}
		
	}
	
	return $fields;
     
}
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter', 10, 3 );
```

別の例として、[値の表示](https://wpforms.com/developers/add-field-values-for-dropdown-checkboxes-and-multiple-choice-fields/ "ドロップダウン、チェックボックス、複数選択フィールドのフィールド値の追加方法")チュートリアルが実装され、ラベルの代わりに `value` が保存される場合が考えられます。

```

/**
 * "値の表示" オプションが有効になっているフィールドの選択肢の `値` を `ラベル` の代わりに保存します。
 *
 * @link   https://wpforms.com/developers/wpforms_process_filter/
 *
 * @param  array  $fields    サニタイズされたエントリーフィールド。値/プロパティ。
 * @param  array  $entry     元の $_POST グローバル。
 * @param  array  $form_data フォームデータと設定。
 */

function wpf_dev_process_filter_choices_values( $fields, $entry, $form_data ) {

	if ( ! is_array( $fields ) ) {
		return $fields;
	}

	foreach ( $fields as $field_id =&gt; $field ) {
		if (
			isset( $field[ 'type' ] ) &amp;&amp;
			in_array( $field[ 'type' ], [ 'checkbox', 'radio', 'select' ], true ) &amp;&amp;
			! empty( $form_data[ 'fields' ][ $field_id ][ 'show_values' ] )
		) {
			$value_raw = ! empty( $field[ 'value_raw' ] ) ? $field[ 'value_raw' ] : '';
			$field[ 'value_raw' ] = $field[ 'value' ];
			$field[ 'value' ] = $value_raw;
			$fields[ $field_id ] = $field;
		}
	}

	return $fields;
};
add_filter( 'wpforms_process_filter', 'wpf_dev_process_filter_choices_values', 10, 3 );

```

## 参照記事

- [各フォーム送信時にカウントを増分する方法](https://wpforms.com/developers/how-to-increment-a-count-on-each-form-submission/ "各フォーム送信時にカウントを増分する方法")
- [キャッシュされていないIPアドレスを非表示フィールドに保存する方法](https://wpforms.com/developers/how-to-store-the-non-cached-ip-address-into-a-hidden-field/ "キャッシュされていないIPアドレスを非表示フィールドに保存する方法")

**カテゴリー:** フィルターフック

**タグ:** PHP

---</body></html>