Automattic\WooCommerce\Internal\RestApi\Routes\V4\Settings\Emails\Schema
EmailsSettingsSchema::validate_and_sanitize_settings
Validate and sanitize email settings.
Method of the class: EmailsSettingsSchema{}
No Hooks.
Returns
Array|WP_Error. Validated settings or error.
Usage
$EmailsSettingsSchema = new EmailsSettingsSchema(); $EmailsSettingsSchema->validate_and_sanitize_settings( $email, $values );
- $email(WC_Email) (required)
- Email instance.
- $values(array) (required)
- Values to validate and sanitize.
EmailsSettingsSchema::validate_and_sanitize_settings() EmailsSettingsSchema::validate and sanitize settings code WC 10.4.3
public function validate_and_sanitize_settings( WC_Email $email, array $values ) {
$email->init_form_fields();
$validated = array();
foreach ( $values as $field_id => $value ) {
// Only allow valid form fields.
if ( ! isset( $email->form_fields[ $field_id ] ) ) {
continue;
}
$field = $email->form_fields[ $field_id ];
$field_type = $field['type'] ?? 'text';
// Unwrap personalization tags if the field supports them to make sure we don't strip them in the sanitization process.
if ( in_array( $field_id, self::FIELDS_SUPPORTING_PERSONALIZATION_TAGS, true ) ) {
$value = $this->unwrap_woocommerce_tags( $value );
}
// Sanitize by type.
$sanitized = $this->sanitize_field_value( $field_type, $value );
// Sanitize Personalization tags. Wrap them in HTML comments for the email editor.
if ( in_array( $field_id, self::FIELDS_SUPPORTING_PERSONALIZATION_TAGS, true ) ) {
$sanitized = $this->wrap_woocommerce_tags( $sanitized );
}
// Validate.
$validation = $this->validate_field_value( $field_id, $sanitized, $field );
if ( is_wp_error( $validation ) ) {
return $validation;
}
$validated[ $field_id ] = $sanitized;
}
return $validated;
}