AI要約
説明
wpforms_process_validate_number-slider アクションは、フォーム送信時に Number Slider フィールドの検証を実行します。これは、フィールド値がサニタイズされる前に行われます。
| パラメーター | タイプ | 説明 |
|---|---|---|
$field_id | string|int | 数値文字列としてのフィールド ID。 |
$field_submit | mixed | 送信されたフィールド値(生のデータ)。フィールドが float にキャストされる前のスライダー値。 |
$form_data | array | フォームデータ。 |
詳細情報
このアクションは WPForms_Process::process() 内で実行されます。wpforms_process_before フックが実行された後、メソッドは $form_data['fields'] 内の各フィールドをループし、$_POST からの生の値を付けて、フィールドごとにこのアクションを 1 回実行します。ファイルは includes/ にあるため、このフックは Lite と Pro の両方で実行されます。Number Slider フィールドクラスも両方に含まれています (includes/fields/class-number-slider.php)。
このフックは do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ) のインスタンスです。フック名はフィールドタイプのハイフンを保持します。同じ呼び出しで、Email フィールドの場合は wpforms_process_validate_email、Name フィールドの場合は wpforms_process_validate_name が実行されます。
フィールド固有の検証は、この同じアクションで実行されます。WPForms_Field::__construct() は、各フィールドの validate() メソッドを優先度 10 で 3 つの引数と共に追加します。Number Slider の場合、そのメソッドは値を float にキャストし、必須設定を強制します(値 0 は入力済みとみなされます)。値が数値でない場合は wpforms_valid_number_label メッセージを設定します。
送信を拒否するには、wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] にメッセージを書き込みます。このループ中に設定されたエラーは、エントリーが保存される前に処理を停止します。これは最終送信時のみ実行されます。マルチページフォームでは、ユーザーがページ間を移動することを妨げません。
ソース
wpforms/includes/class-process.php
例
選択された値が 0 の場合に Number Slider の送信を拒否するため、フォームが送信される前にユーザーはスライダーを動かす必要があります。
/**
* Require a Number Slider value other than 0.
*
* @link https://wpforms.com/developers/wpforms_process_validate_number-slider/
*
* @param string|int $field_id Field ID as a numeric string.
* @param mixed $field_submit Submitted field value (raw data).
* @param array $form_data Form data.
*/
function wpf_dev_validate_number_slider( $field_id, $field_submit, $form_data ) {
// Only run on the form with ID 143 and the Number Slider field with ID 1. Remember to change both IDs to match your form.
if ( absint( $form_data['id'] ) !== 143 || absint( $field_id ) !== 1 ) {
return;
}
if ( (float) $field_submit === 0.0 ) {
wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'Please select a number that is not 0.', 'wpforms' );
}
}
add_action( 'wpforms_process_validate_number-slider', 'wpf_dev_validate_number_slider', 10, 3 );




