On this page
WP_Theme_JSON::flatten_tree( array $tree, string $prefix = '', string $token = '--' ): array
Given a tree, it creates a flattened one by merging the keys and binding the leaf values to the new keys.
Description
It also transforms camelCase names into kebab-case and substitutes ‘/’ by ‘-‘.
This is thought to be useful to generate CSS Custom Properties from a tree, although there’s nothing in the implementation of this function that requires that format.
For example, assuming the given prefix is ‘–wp’ and the token is ‘–‘, for this input tree:
{
'some/property': 'value',
'nestedProperty': {
'sub-property': 'value'
}
}
it’ll return this output:
{
'--wp--some-property': 'value',
'--wp--nested-property--sub-property': 'value'
}
Parameters
$treearray Required-
Input tree to process.
$prefixstring Optional-
Prefix to prepend to each variable.
Default:
'' $tokenstring Optional-
Token to use between levels. Default
'--'.Default:
'--'
Return
array The flattened tree.
Source
File: wp-includes/class-wp-theme-json.php. View all references
protected static function flatten_tree( $tree, $prefix = '', $token = '--' ) {
$result = array();
foreach ( $tree as $property => $value ) {
$new_key = $prefix . str_replace(
'/',
'-',
strtolower( _wp_to_kebab_case( $property ) )
);
if ( is_array( $value ) ) {
$new_prefix = $new_key . $token;
$result = array_merge(
$result,
static::flatten_tree( $value, $new_prefix, $token )
);
} else {
$result[ $new_key ] = $value;
}
}
return $result;
}
Related
Uses
| Uses | Description |
|---|---|
| _wp_to_kebab_case() wp-includes/functions.php | This function is trying to replicate what lodash’s kebabCase (JS library) does in the client. |
Changelog
| Version | Description |
|---|---|
| 5.8.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_theme_json/flatten_tree