WP_REST_Global_Styles_Controller::prepare_item_for_database( WP_REST_Request $request ): stdClass|WP_Error
- Since
- 5.9.0, 6.2.0, 6.6.0
- Source
wp-includes/rest-api/endpoints/class-wp-rest-global-styles-controller.php:238
Prepares a single global styles config for update.
Parameters
$requestWP_REST_Request- Request object.
Return
stdClass|WP_Error- Prepared item on success. WP_Error on when the custom CSS is not valid.
Uses · 7
- get_post()Retrieves post data given a post ID or post object.
- is_wp_error()Checks whether the given variable is a WordPress Error.
- wp_register_block_style_variations_from_theme_json_partials()Registers block style variations read in from theme.json partials.
- wp_json_encode()Encodes a variable into JSON, with some confidence checks.
- stdClass::__construct()
- WP_REST_Global_Styles_Controller::validate_custom_css()Validate style.css as valid CSS.
- WP_Theme_JSON_Resolver::get_style_variations()Returns the style variations defined by the theme.
Source
protected function prepare_item_for_database( $request ) { $changes = new stdClass(); $changes->ID = $request['id']; $post = get_post( $request['id'] ); $existing_config = array(); if ( $post ) { $existing_config = json_decode( $post->post_content, true ); $json_decoding_error = json_last_error(); if ( JSON_ERROR_NONE !== $json_decoding_error || ! isset( $existing_config['isGlobalStylesUserThemeJSON'] ) || ! $existing_config['isGlobalStylesUserThemeJSON'] ) { $existing_config = array(); } } if ( isset( $request['styles'] ) || isset( $request['settings'] ) ) { $config = array(); if ( isset( $request['styles'] ) ) { if ( isset( $request['styles']['css'] ) ) { $css_validation_result = $this->validate_custom_css( $request['styles']['css'] ); if ( is_wp_error( $css_validation_result ) ) { return $css_validation_result; } } $config['styles'] = $request['styles']; } elseif ( isset( $existing_config['styles'] ) ) { $config['styles'] = $existing_config['styles']; } // Register theme-defined variations e.g. from block style variation partials under `/styles`. $variations = WP_Theme_JSON_Resolver::get_style_variations( 'block' ); wp_register_block_style_variations_from_theme_json_partials( $variations ); if ( isset( $request['settings'] ) ) { $config['settings'] = $request['settings']; } elseif ( isset( $existing_config['settings'] ) ) { $config['settings'] = $existing_config['settings']; } $config['isGlobalStylesUserThemeJSON'] = true; $config['version'] = WP_Theme_JSON::LATEST_SCHEMA; /** * JSON encode the data stored in post content. * Escape characters that are likely to be mangled by HTML filters: "<>&". * * This data is later re-encoded by {@see wp_filter_global_styles_post()}. * The escaping is also applied here as a precaution. */ $changes->post_content = wp_json_encode( $config, JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP ); } // Post title. if ( isset( $request['title'] ) ) { if ( is_string( $request['title'] ) ) { $changes->post_title = $request['title']; } elseif ( ! empty( $request['title']['raw'] ) ) { $changes->post_title = $request['title']['raw']; } } return $changes; }History
Introduced in 5.9.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
6.6.0
Added registration of block style variations from theme.json sources (theme.json, user theme.json, partials).from the docblock
6.2.0
Added validation of styles.css property.from the docblock
5.9.0
Introduced.from the docblock
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-controller.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.