WP_Theme_JSON::get_property_value()
Returns the style property for the given path.
It also converts references to a path to the value stored at that location, e.g. { "ref": "style.color.background" } => "#fff".
Method of the class: WP_Theme_JSON{}
No Hooks.
Return
String|Array
. Style property value.
Usage
$result = WP_Theme_JSON::get_property_value( $styles, $path, $theme_json );
- $styles(array) (required)
- Styles subtree.
- $path(array) (required)
- Which property to process.
- $theme_json(array)
- Theme JSON array.
Default: null
Changelog
Since 5.8.0 | Introduced. | ||
Since 5.9.0 | Added support for values of array type, which are returned as is. | ||
Since 6.1.0 | Added the $theme_json parameter. | ||
Since 6.3.0 | It no longer converts the internal format "var:preset | color | secondary" to the standard form "--wp--preset--color--secondary". This is already done by the sanitize method, so every property will be in the standard form. |
Since 6.7.0 | Added support for background image refs. |
WP_Theme_JSON::get_property_value() WP Theme JSON::get property value code WP 6.7.1
protected static function get_property_value( $styles, $path, $theme_json = null ) { $value = _wp_array_get( $styles, $path, '' ); if ( '' === $value || null === $value ) { // No need to process the value further. return ''; } /* * This converts references to a path to the value at that path * where the value is an array with a "ref" key, pointing to a path. * For example: { "ref": "style.color.background" } => "#fff". * In the case of backgroundImage, if both a ref and a URL are present in the value, * the URL takes precedence and the ref is ignored. */ if ( is_array( $value ) && isset( $value['ref'] ) ) { $value_path = explode( '.', $value['ref'] ); $ref_value = _wp_array_get( $theme_json, $value_path ); // Background Image refs can refer to a string or an array containing a URL string. $ref_value_url = $ref_value['url'] ?? null; // Only use the ref value if we find anything. if ( ! empty( $ref_value ) && ( is_string( $ref_value ) || is_string( $ref_value_url ) ) ) { $value = $ref_value; } if ( is_array( $ref_value ) && isset( $ref_value['ref'] ) ) { $path_string = json_encode( $path ); $ref_value_string = json_encode( $ref_value ); _doing_it_wrong( 'get_property_value', sprintf( /* translators: 1: theme.json, 2: Value name, 3: Value path, 4: Another value name. */ __( 'Your %1$s file uses a dynamic value (%2$s) for the path at %3$s. However, the value at %3$s is also a dynamic value (pointing to %4$s) and pointing to another dynamic value is not supported. Please update %3$s to point directly to %4$s.' ), 'theme.json', $ref_value_string, $path_string, $ref_value['ref'] ), '6.1.0' ); } } if ( is_array( $value ) ) { return $value; } return $value; }