WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles()
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 Theme JSON Resolver::get user data from wp global styles WP 6.7.2
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; }