WP_Theme_JSON::__construct( array $theme_json = array(), string $origin = 'theme' )
Constructor.
Parameters
-
$theme_json
array Optional -
A structure that follows the theme.json schema.
Default:
array()
-
$origin
string Optional -
What source of data this object represents.
One of'default'
,'theme'
, or'custom'
. Default'theme'
.Default:
'theme'
Source
File: wp-includes/class-wp-theme-json.php
.
View all references
public function __construct( $theme_json = array(), $origin = 'theme' ) {
if ( ! in_array( $origin, static::VALID_ORIGINS, true ) ) {
$origin = 'theme';
}
$this->theme_json = WP_Theme_JSON_Schema::migrate( $theme_json );
$valid_block_names = array_keys( static::get_blocks_metadata() );
$valid_element_names = array_keys( static::ELEMENTS );
$theme_json = static::sanitize( $this->theme_json, $valid_block_names, $valid_element_names );
$this->theme_json = static::maybe_opt_in_into_settings( $theme_json );
// Internally, presets are keyed by origin.
$nodes = static::get_setting_nodes( $this->theme_json );
foreach ( $nodes as $node ) {
foreach ( static::PRESETS_METADATA as $preset_metadata ) {
$path = array_merge( $node['path'], $preset_metadata['path'] );
$preset = _wp_array_get( $this->theme_json, $path, null );
if ( null !== $preset ) {
// If the preset is not already keyed by origin.
if ( isset( $preset[0] ) || empty( $preset ) ) {
_wp_array_set( $this->theme_json, $path, array( $origin => $preset ) );
}
}
}
}
}
Changelog
Version | Description |
---|---|
5.8.0 | Introduced. |