This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.
WP_Customize_Header_Image_Setting::sanitize_choice( mixed $value )
Sanitizes a header image choice.
Description
This is the value which is ultimately passed to Custom_Image_Header::set_header_image(), whether supplied at the top level of the setting value or nested under its legacy choice key.
Parameters
- $value
-
(mixed) (Required) Value to sanitize.
Return
(array|string|WP_Error|null) Sanitized value, or null/WP_Error if invalid.
Source
File: wp-includes/customize/class-wp-customize-header-image-setting.php
private function sanitize_choice( $value ) {
// Custom_Image_Header::set_header_image() accepts an object in place of an array.
if ( is_object( $value ) ) {
$value = (array) $value;
}
if ( is_string( $value ) ) {
return sanitize_text_field( $value );
}
if ( ! is_array( $value ) ) {
return null;
}
/*
* The sanitized value is assembled member by member rather than filtered down from the
* supplied one, so that nothing but the members below can end up in it.
*/
$sanitized = array();
if ( isset( $value['attachment_id'] ) ) {
if ( ! is_scalar( $value['attachment_id'] ) ) {
return null;
}
$attachment_id = absint( $value['attachment_id'] );
/*
* A supplied attachment must be an existing image, since its ID is written to postmeta and its
* data displayed. Note that an ID of zero must be skipped rather than looked up, as
* get_post_mime_type() falls back to the global post when passed an empty value.
*/
if ( $attachment_id > 0 ) {
$mime_type = get_post_mime_type( $attachment_id );
if ( ! is_string( $mime_type ) || ! str_starts_with( $mime_type, 'image/' ) ) {
return null;
}
}
$sanitized['attachment_id'] = $attachment_id;
}
if ( isset( $value['url'] ) ) {
if ( ! is_string( $value['url'] ) ) {
return null;
}
$sanitized['url'] = sanitize_url( $value['url'] );
if ( '' === $sanitized['url'] ) {
return new WP_Error( 'invalid_url', __( 'Invalid URL.' ) );
}
}
if ( isset( $value['thumbnail_url'] ) ) {
if ( ! is_string( $value['thumbnail_url'] ) ) {
return null;
}
$sanitized['thumbnail_url'] = sanitize_url( $value['thumbnail_url'] );
if ( '' === $sanitized['thumbnail_url'] ) {
return new WP_Error( 'invalid_url', __( 'Invalid URL.' ) );
}
}
if ( isset( $value['timestamp'] ) ) {
if ( ! is_scalar( $value['timestamp'] ) ) {
return null;
}
$sanitized['timestamp'] = absint( $value['timestamp'] );
}
if ( isset( $value['width'] ) ) {
if ( ! is_scalar( $value['width'] ) ) {
return null;
}
$sanitized['width'] = absint( $value['width'] );
}
if ( isset( $value['height'] ) ) {
if ( ! is_scalar( $value['height'] ) ) {
return null;
}
$sanitized['height'] = absint( $value['height'] );
}
if ( isset( $value['alt_text'] ) ) {
if ( ! is_string( $value['alt_text'] ) ) {
return null;
}
$sanitized['alt_text'] = sanitize_text_field( $value['alt_text'] );
}
if ( isset( $value['attachment_parent'] ) ) {
if ( ! is_scalar( $value['attachment_parent'] ) ) {
return null;
}
$sanitized['attachment_parent'] = absint( $value['attachment_parent'] );
}
return $sanitized;
}
Changelog
| Version | Description |
|---|---|
| 7.1.1 | Introduced. |