WP_Theme_JSON::merge( WP_Theme_JSON $incoming )
Merge new incoming data.
Parameters
- $incoming
-
(WP_Theme_JSON) (Required) Data to merge.
Source
File: wp-includes/class-wp-theme-json.php
public function merge( $incoming ) { $incoming_data = $incoming->get_raw_data(); $this->theme_json = array_replace_recursive( $this->theme_json, $incoming_data ); /* * The array_replace_recursive() algorithm merges at the leaf level. * For leaf values that are arrays it will use the numeric indexes for replacement. * In those cases, we want to replace the existing with the incoming value, if it exists. */ $to_replace = array(); $to_replace[] = array( 'spacing', 'units' ); $to_replace[] = array( 'color', 'duotone' ); foreach ( self::VALID_ORIGINS as $origin ) { $to_replace[] = array( 'color', 'palette', $origin ); $to_replace[] = array( 'color', 'gradients', $origin ); $to_replace[] = array( 'typography', 'fontSizes', $origin ); $to_replace[] = array( 'typography', 'fontFamilies', $origin ); } $nodes = self::get_setting_nodes( $this->theme_json ); foreach ( $nodes as $metadata ) { foreach ( $to_replace as $property_path ) { $path = array_merge( $metadata['path'], $property_path ); $node = _wp_array_get( $incoming_data, $path, null ); if ( isset( $node ) ) { _wp_array_set( $this->theme_json, $path, $node ); } } } }
Changelog
Version | Description |
---|---|
5.8.0 | Introduced. |
© 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_theme_json/merge