wppaste
WordPress

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

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.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 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.