WP_Customize_Header_Image_Setting::sanitize_choice
Sanitizes a header image choice.
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.
Method of the class: WP_Customize_Header_Image_Setting{}
No Hooks.
Returns
array|string|WP_Error|null. Sanitized value, or null/WP_Error if invalid.
Usage
// private - for code of main (parent) class only $result = $this->sanitize_choice( $value );
- $value(mixed) (required)
- Value to sanitize.
Changelog
| Since 7.1.1 | Introduced. |
WP_Customize_Header_Image_Setting::sanitize_choice() WP Customize Header Image Setting::sanitize choice code WP 7.1.2
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;
}