Automattic\WooCommerce\Blocks\Domain\Services
CheckoutFields::validate_field
Validate an additional field.
Метод класса: CheckoutFields{}
Хуки из метода
Возвращает
WP_Error.
Использование
$CheckoutFields = new CheckoutFields(); $CheckoutFields->validate_field( $field, $field_value );
- $field(массив) (обязательный)
- The field.
- $field_value(разное) (обязательный)
- The value of the field.
Список изменений
| С версии 8.6.0 | Введена. |
Код CheckoutFields::validate_field() CheckoutFields::validate field WC 10.5.0
public function validate_field( $field, $field_value ) {
$errors = new WP_Error();
try {
// Only validate if we have a field.
if ( ! $field ) {
return $errors;
}
if ( ! empty( $field['validate_callback'] ) && is_callable( $field['validate_callback'] ) ) {
$validate_callback_result = call_user_func( $field['validate_callback'], $field_value, $field );
if ( is_wp_error( $validate_callback_result ) ) {
$errors->merge_from( $validate_callback_result );
} elseif ( false === $validate_callback_result ) {
/* translators: %s: is the field label */
$error_message = sprintf( __( 'Please provide a valid %s', 'woocommerce' ), $field['label'] );
$errors->add( 'woocommerce_invalid_checkout_field', $error_message );
}
}
wc_do_deprecated_action( '__experimental_woocommerce_blocks_validate_additional_field', array( $errors, $field['id'], $field_value ), '8.7.0', 'woocommerce_validate_additional_field', 'This action has been graduated, use woocommerce_validate_additional_field instead.' );
/**
* Pass an error object to allow validation of an additional field.
*
* @param WP_Error $errors A WP_Error object that extensions may add errors to.
* @param string $field_key Key of the field being sanitized.
* @param mixed $field_value The value of the field being validated.
*
* @since 8.7.0
*/
do_action( 'woocommerce_validate_additional_field', $errors, $field['id'], $field_value );
} catch ( \Throwable $e ) {
// One of the filters errored so skip them and validate the field. This allows the checkout process to continue.
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
trigger_error(
sprintf(
'Field validation for %s encountered an error. %s',
esc_html( $field['id'] ),
esc_html( $e->getMessage() )
),
E_USER_WARNING
);
}
return $errors;
}