Automattic\WooCommerce\Blocks\Domain\Services

CheckoutFields::validate_field()publicWC 8.6.0

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() WC 9.8.1

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 );
			}
		}

		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_key ),
				esc_html( $e->getMessage() )
			),
			E_USER_WARNING
		);
	}

	return $errors;
}