return "$classes is-fullscreen-mode"; } ); $block_editor_context = new \WP_Block_Editor_Context( array( 'name' => 'core/edit-site' ) ); $indexed_template_types = array(); foreach ( get_default_block_template_types() as $slug => $template_type ) { $template_type['slug'] = (string) $slug; $indexed_template_types[] = $template_type; } $custom_settings = array( 'siteUrl' => site_url(), 'postsPerPage' => get_option( 'posts_per_page' ), 'styles' => get_block_editor_theme_styles(), 'defaultTemplateTypes' => $indexed_template_types, 'defaultTemplatePartAreas' => get_allowed_block_template_part_areas(), 'supportsLayout' => wp_theme_has_theme_json(), 'supportsTemplatePartsMode' => ! wp_is_block_theme() && current_theme_supports( 'block-template-parts' ), ); // Add additional back-compat patterns registered by `current_screen` et al. $custom_settings['__experimentalAdditionalBlockPatterns'] = \WP_Block_Patterns_Registry::get_instance()->get_all_registered( true ); $custom_settings['__experimentalAdditionalBlockPatternCategories'] = \WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered( true ); $editor_settings = get_block_editor_settings( $custom_settings, $block_editor_context ); $active_global_styles_id = \WP_Theme_JSON_Resolver::get_user_global_styles_post_id(); $active_theme = get_stylesheet(); $preload_paths = array( array( '/wp/v2/media', 'OPTIONS' ), '/wp/v2/types?context=view', '/wp/v2/types/wp_template?context=edit', '/wp/v2/types/wp_template-part?context=edit', '/wp/v2/templates?context=edit&per_page=-1', '/wp/v2/template-parts?context=edit&per_page=-1', '/wp/v2/themes?context=edit&status=active', '/wp/v2/global-styles/' . $active_global_styles_id . '?context=edit', '/wp/v2/global-styles/' . $active_global_styles_id, '/wp/v2/global-styles/themes/' . $active_theme, ); block_editor_rest_api_preload( $preload_paths, $block_editor_context ); wp_add_inline_script( 'wp-blocks', sprintf( 'window.wcBlockSettings = %s;', wp_json_encode( $editor_settings ) ) ); // Preload server-registered block schemas. wp_add_inline_script( 'wp-blocks', 'wp.blocks.unstable__bootstrapServerSideBlockDefinitions(' . wp_json_encode( get_block_editor_server_block_settings() ) . ');' ); wp_add_inline_script( 'wp-blocks', sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( isset( $editor_settings['blockCategories'] ) ? $editor_settings['blockCategories'] : array() ) ), 'after' ); wp_enqueue_script( 'wp-editor' ); wp_enqueue_script( 'wp-format-library' ); // Not sure if this is needed. wp_enqueue_script( 'wp-router' ); wp_enqueue_style( 'wp-editor' ); wp_enqueue_style( 'wp-edit-site' ); wp_enqueue_style( 'wp-format-library' ); wp_enqueue_media(); if ( current_theme_supports( 'wp-block-styles' ) && ( ! is_array( $editor_styles ) || count( $editor_styles ) === 0 ) ) { wp_enqueue_style( 'wp-block-library-theme' ); } /** This action is documented in wp-admin/edit-form-blocks.php * * @since 8.0.3 */ do_action( 'enqueue_block_editor_assets' ); } /** * Appends a small style to hide admin bar * * @param bool $show Whether to show the admin bar. */ public function possibly_hide_wp_admin_bar( $show ) { if ( isset( $_GET['cys-hide-admin-bar'] ) ) { // @phpcs:ignore return false; } return $show; } /** * Runs script and add styles to remove unwanted elements and hide scrollbar * when users are viewing with ?cys-hide-admin-bar=true. * * @return void */ public function possibly_remove_unwanted_ui_elements() { if ( isset( $_GET['cys-hide-admin-bar'] ) ) { // @phpcs:ignore echo ' '; } } /** * Checks if the post has custom global styles stored (if it is different from the default global styles). * * @param WP_Post $post The post object. * @return bool */ private function has_custom_global_styles( WP_Post $post ) { $required_keys = array( 'version', 'isGlobalStylesUserThemeJSON' ); $json_post_content = json_decode( $post->post_content, true ); if ( is_null( $json_post_content ) ) { return false; } $post_content_keys = array_keys( $json_post_content ); return ! empty( array_diff( $post_content_keys, $required_keys ) ) || ! empty( array_diff( $required_keys, $post_content_keys ) ); } /** * Checks if the post is a template or a template part. * * @param WP_Post $post The post object. * @return bool Whether the post is a template or a template part. */ private function has_custom_template( WP_Post $post ) { return in_array( $post->post_type, array( 'wp_template', 'wp_template_part' ), true ); } }