WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles( WP_Theme $theme, bool $create_post = false, array $post_status_filter = array('publish') ): array

Returns the custom post type that contains the user’s origin config for the active theme or an empty array if none are found.


Description

This can also create and return a new draft custom post type.


Top ↑

Parameters

$theme WP_Theme Required
The theme object. If empty, it defaults to the active theme.
$create_post bool Optional
Whether a new custom post type should be created if none are found.

Default: false

$post_status_filter array Optional
Filter custom post type by post status. Default array( 'publish' ), so it only fetches published posts.

Default: array('publish')


Top ↑

Return

array Custom Post Type for the user's origin config.


Top ↑

Source

File: wp-includes/class-wp-theme-json-resolver.php. View all references

public static function get_user_data_from_wp_global_styles( $theme, $create_post = false, $post_status_filter = array( 'publish' ) ) {
	if ( ! $theme instanceof WP_Theme ) {
		$theme = wp_get_theme();
	}

	/*
	 * Bail early if the theme does not support a theme.json.
	 *
	 * Since wp_theme_has_theme_json() only supports the active
	 * theme, the extra condition for whether $theme is the active theme is
	 * present here.
	 */
	if ( $theme->get_stylesheet() === get_stylesheet() && ! wp_theme_has_theme_json() ) {
		return array();
	}

	$user_cpt         = array();
	$post_type_filter = 'wp_global_styles';
	$stylesheet       = $theme->get_stylesheet();
	$args             = array(
		'posts_per_page'         => 1,
		'orderby'                => 'date',
		'order'                  => 'desc',
		'post_type'              => $post_type_filter,
		'post_status'            => $post_status_filter,
		'ignore_sticky_posts'    => true,
		'no_found_rows'          => true,
		'update_post_meta_cache' => false,
		'update_post_term_cache' => false,
		'tax_query'              => array(
			array(
				'taxonomy' => 'wp_theme',
				'field'    => 'name',
				'terms'    => $stylesheet,
			),
		),
	);

	$global_style_query = new WP_Query();
	$recent_posts       = $global_style_query->query( $args );
	if ( count( $recent_posts ) === 1 ) {
		$user_cpt = get_object_vars( $recent_posts[0] );
	} elseif ( $create_post ) {
		$cpt_post_id = wp_insert_post(
			array(
				'post_content' => '{"version": ' . WP_Theme_JSON::LATEST_SCHEMA . ', "isGlobalStylesUserThemeJSON": true }',
				'post_status'  => 'publish',
				'post_title'   => 'Custom Styles', // Do not make string translatable, see https://core.trac.wordpress.org/ticket/54518.
				'post_type'    => $post_type_filter,
				'post_name'    => sprintf( 'wp-global-styles-%s', urlencode( $stylesheet ) ),
				'tax_input'    => array(
					'wp_theme' => array( $stylesheet ),
				),
			),
			true
		);
		if ( ! is_wp_error( $cpt_post_id ) ) {
			$user_cpt = get_object_vars( get_post( $cpt_post_id ) );
		}
	}

	return $user_cpt;
}


Top ↑

Changelog

Changelog
Version Description
5.9.0 Introduced.

Top ↑

User Contributed Notes

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