WP_Theme_JSON_Resolver::get_style_variations()public staticWP 6.0.0

Returns the style variations defined by the theme.

Метод класса: WP_Theme_JSON_Resolver{}

Хуков нет.

Возвращает

Массив.

Использование

$result = WP_Theme_JSON_Resolver::get_style_variations( $scope );
$scope(строка)
The scope or type of style variation to retrieve e.g. theme, block etc.
По умолчанию: 'theme'

Список изменений

С версии 6.0.0 Введена.
С версии 6.2.0 Returns parent theme variations if theme is a child.
С версии 6.6.0 Added configurable scope parameter to allow filtering theme.json partial files by the scope to which they can be applied e.g. theme vs block etc. Added basic caching for read theme.json partial files.

Код WP_Theme_JSON_Resolver::get_style_variations() WP 6.6

public static function get_style_variations( $scope = 'theme' ) {
	$variation_files    = array();
	$variations         = array();
	$base_directory     = get_stylesheet_directory() . '/styles';
	$template_directory = get_template_directory() . '/styles';
	if ( is_dir( $base_directory ) ) {
		$variation_files = static::recursively_iterate_json( $base_directory );
	}
	if ( is_dir( $template_directory ) && $template_directory !== $base_directory ) {
		$variation_files_parent = static::recursively_iterate_json( $template_directory );
		// If the child and parent variation file basename are the same, only include the child theme's.
		foreach ( $variation_files_parent as $parent_path => $parent ) {
			foreach ( $variation_files as $child_path => $child ) {
				if ( basename( $parent_path ) === basename( $child_path ) ) {
					unset( $variation_files_parent[ $parent_path ] );
				}
			}
		}
		$variation_files = array_merge( $variation_files, $variation_files_parent );
	}
	ksort( $variation_files );
	foreach ( $variation_files as $path => $file ) {
		$decoded_file = self::read_json_file( $path );
		if ( is_array( $decoded_file ) && static::style_variation_has_scope( $decoded_file, $scope ) ) {
			$translated = static::translate( $decoded_file, wp_get_theme()->get( 'TextDomain' ) );
			$variation  = ( new WP_Theme_JSON( $translated ) )->get_raw_data();
			if ( empty( $variation['title'] ) ) {
				$variation['title'] = basename( $path, '.json' );
			}
			$variations[] = $variation;
		}
	}
	return $variations;
}