WP_Theme_JSON::get_from_editor_settings( array $settings ): array

In this article

Transforms the given editor settings according the add_theme_support format to the theme.json format.

Parameters

$settingsarrayrequired
Existing editor settings.

Return

array Config that adheres to the theme.json schema.

Source

		$css .= '.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; }';
	}

	$css .= '.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';
	$css .= '.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';
	$css .= '.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';

	// Block gap styles will be output unless explicitly set to `null`. See static::PROTECTED_PROPERTIES.
	if ( isset( $this->theme_json['settings']['spacing']['blockGap'] ) ) {
		$block_gap_value = static::get_property_value( $this->theme_json, array( 'styles', 'spacing', 'blockGap' ) );
		$css            .= ":where(.wp-site-blocks) > * { margin-block-start: $block_gap_value; margin-block-end: 0; }";
		$css            .= ':where(.wp-site-blocks) > :first-child { margin-block-start: 0; }';
		$css            .= ':where(.wp-site-blocks) > :last-child { margin-block-end: 0; }';

		// For backwards compatibility, ensure the legacy block gap CSS variable is still available.
		$css .= static::ROOT_CSS_PROPERTIES_SELECTOR . " { --wp--style--block-gap: $block_gap_value; }";
	}
	$css .= $this->get_layout_styles( $block_metadata );

	return $css;
}

/**
 * For metadata values that can either be booleans or paths to booleans, gets the value.
 *
 *     $data = array(
 *       'color' => array(
 *         'defaultPalette' => true
 *       )
 *     );
 *
 *     static::get_metadata_boolean( $data, false );
 *     // => false
 *
 *     static::get_metadata_boolean( $data, array( 'color', 'defaultPalette' ) );
 *     // => true
 *
 * @since 6.0.0
 *
 * @param array      $data          The data to inspect.
 * @param bool|array $path          Boolean or path to a boolean.
 * @param bool       $default_value Default value if the referenced path is missing.
 *                                  Default false.
 * @return bool Value of boolean metadata.
 */
protected static function get_metadata_boolean( $data, $path, $default_value = false ) {
	if ( is_bool( $path ) ) {
		return $path;
	}

	if ( is_array( $path ) ) {
		$value = _wp_array_get( $data, $path );
		if ( null !== $value ) {
			return $value;
		}
	}

	return $default_value;
}

/**
 * Merges new incoming data.
 *
 * @since 5.8.0
 * @since 5.9.0 Duotone preset also has origins.
 * @since 6.7.0 Replace background image objects during merge.
 *
 * @param WP_Theme_JSON $incoming Data to merge.
 */
public function merge( $incoming ) {
	$incoming_data    = $incoming->get_raw_data();
	$this->theme_json = array_replace_recursive( $this->theme_json, $incoming_data );

	/*
	 * Recompute all the spacing sizes based on the new hierarchy of data. In the constructor
	 * spacingScale and spacingSizes are both keyed by origin and VALID_ORIGINS is ordered, so
	 * we can allow partial spacingScale data to inherit missing data from earlier layers when
	 * computing the spacing sizes.
	 *
	 * This happens before the presets are merged to ensure that default spacing sizes can be
	 * removed from the theme origin if $prevent_override is true.

Changelog

VersionDescription
5.8.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.