WP_Theme_JSON_Resolver::get_user_data_from_wp_global_stylespublic staticWP 5.9.0

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

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

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

Хуков нет.

Возвращает

Массив. Custom Post Type for the user's origin config.

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

$result = WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles( $theme, $create_post, $post_status_filter );
$theme(WP_Theme) (обязательный)
The theme object. If empty, it defaults to the active theme.
$create_post(true|false)
Whether a new custom post type should be created if none are found.
По умолчанию: false
$post_status_filter(массив)
Filter custom post type by post status.
По умолчанию: array( 'publish' ), so it only fetches published posts

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

С версии 5.9.0 Введена.

Код WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles() WP 7.0

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();
	}

	$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 && $recent_posts[0] instanceof WP_Post ) {
		$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 ) ) {
			$post = get_post( $cpt_post_id );
			if ( $post instanceof WP_Post ) {
				$user_cpt = get_object_vars( $post );
			}
		}
	}

	return $user_cpt;
}