wp_resolve_block_style_variation_ref_values()
Recursively resolves any ref values within a block style variation's data.
Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.
No Hooks.
Returns
null. Nothing (null).
Usage
wp_resolve_block_style_variation_ref_values( $variation_data, $theme_json );
- $variation_data(array) (required) (passed by reference — &)
- Reference to the variation data being processed.
- $theme_json(array) (required)
- Theme.json data to retrieve referenced values from.
Changelog
| Since 6.6.0 | Introduced. |
wp_resolve_block_style_variation_ref_values() wp resolve block style variation ref values code WP 6.8.3
function wp_resolve_block_style_variation_ref_values( &$variation_data, $theme_json ) {
foreach ( $variation_data as $key => &$value ) {
// Only need to potentially process arrays.
if ( is_array( $value ) ) {
// If ref value is set, attempt to find its matching value and update it.
if ( array_key_exists( 'ref', $value ) ) {
// Clean up any invalid ref value.
if ( empty( $value['ref'] ) || ! is_string( $value['ref'] ) ) {
unset( $variation_data[ $key ] );
}
$value_path = explode( '.', $value['ref'] ?? '' );
$ref_value = _wp_array_get( $theme_json, $value_path );
// Only update the current value if the referenced path matched a value.
if ( null === $ref_value ) {
unset( $variation_data[ $key ] );
} else {
$value = $ref_value;
}
} else {
// Recursively look for ref instances.
wp_resolve_block_style_variation_ref_values( $value, $theme_json );
}
}
}
}