WP_Theme_JSON::sanitize_viewport_settings
Sanitizes and normalizes viewport breakpoint settings.
Keeps only supported breakpoint keys, trims valid CSS lengths, and returns the default breakpoints when no valid custom breakpoint is provided. When only one breakpoint is valid, it remains keyed by its configured state and uses a single max-width media query. When tablet is not larger than mobile, it is removed.
Method of the class: WP_Theme_JSON{}
No Hooks.
Returns
Array. Sanitized viewport breakpoint settings.
Usage
$result = WP_Theme_JSON::sanitize_viewport_settings( $viewport_settings );
- $viewport_settings(mixed) (required)
- Viewport settings from theme.json.
Changelog
| Since 7.1.0 | Introduced. |
WP_Theme_JSON::sanitize_viewport_settings() WP Theme JSON::sanitize viewport settings code WP 7.1
private static function sanitize_viewport_settings( $viewport_settings ) {
if ( ! is_array( $viewport_settings ) ) {
return static::DEFAULT_VIEWPORT_BREAKPOINTS;
}
$breakpoints = array();
foreach ( array_keys( static::DEFAULT_VIEWPORT_BREAKPOINTS ) as $breakpoint ) {
$value = $viewport_settings[ $breakpoint ] ?? null;
$px = static::get_viewport_breakpoint_value_in_pixels( $value );
if ( null !== $px ) {
$breakpoints[ $breakpoint ] = array(
'value' => trim( $value ),
'px' => $px,
);
}
}
if ( empty( $breakpoints ) ) {
return static::DEFAULT_VIEWPORT_BREAKPOINTS;
}
if ( 1 === count( $breakpoints ) ) {
$breakpoint = key( $breakpoints );
return array( $breakpoint => $breakpoints[ $breakpoint ]['value'] );
}
$sanitized = array( 'mobile' => $breakpoints['mobile']['value'] );
if ( isset( $breakpoints['tablet'] ) && $breakpoints['mobile']['px'] < $breakpoints['tablet']['px'] ) {
$sanitized['tablet'] = $breakpoints['tablet']['value'];
}
return $sanitized;
}