From 102b13cdb953bc6c20f55c430a9a949b65050549 Mon Sep 17 00:00:00 2001 From: desrosj Date: Fri, 14 Dec 2018 03:36:38 +0000 Subject: [PATCH] Styles: Add helper functions for loading block styles. Blocks are able to register styles that used in the editor and the frontend, or only in the editor. These functions ensure the correct styles are loaded in the correct place. Props pento. Merges [43812] to trunk. See #45065. Built from https://develop.svn.wordpress.org/trunk@44157 git-svn-id: http://core.svn.wordpress.org/trunk@43987 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/default-filters.php | 4 ++ wp-includes/script-loader.php | 71 +++++++++++++++++++++++++++++++++ wp-includes/version.php | 2 +- 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php index cddc762c86..66d64485d6 100644 --- a/wp-includes/default-filters.php +++ b/wp-includes/default-filters.php @@ -507,6 +507,10 @@ add_action( 'wp_default_scripts', 'wp_default_packages' ); add_action( 'wp_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 ); add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 ); +add_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' ); +add_action( 'admin_enqueue_scripts', 'wp_common_block_scripts_and_styles' ); +add_action( 'enqueue_block_assets', 'wp_enqueue_registered_block_scripts_and_styles' ); +add_action( 'enqueue_block_editor_assets', 'wp_enqueue_registered_block_scripts_and_styles' ); add_action( 'admin_print_scripts-index.php', 'wp_localize_community_events' ); add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' ); add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' ); diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php index 6a83863bfe..798da85a9b 100644 --- a/wp-includes/script-loader.php +++ b/wp-includes/script-loader.php @@ -2415,3 +2415,74 @@ function script_concat_settings() { } } } + +/** + * Handles the enqueueing of block scripts and styles that are common to both + * the editor and the front-end. + * + * @since 5.0.0 + * + * @global WP_Screen $current_screen + */ +function wp_common_block_scripts_and_styles() { + global $current_screen; + + if ( is_admin() && ! $current_screen->is_block_editor() ) { + return; + } + + wp_enqueue_style( 'wp-block-library' ); + + if ( current_theme_supports( 'wp-block-styles' ) ) { + wp_enqueue_style( 'wp-block-library-theme' ); + } + + /** + * Fires after enqueuing block assets for both editor and front-end. + * + * Call `add_action` on any hook before 'wp_enqueue_scripts'. + * + * In the function call you supply, simply use `wp_enqueue_script` and + * `wp_enqueue_style` to add your functionality to the Gutenberg editor. + * + * @since 5.0.0 + */ + do_action( 'enqueue_block_assets' ); +} + +/** + * Enqueues registered block scripts and styles, depending on current rendered + * context (only enqueuing editor scripts while in context of the editor). + * + * @since 5.0.0 + * + * @global WP_Screen $current_screen + */ +function wp_enqueue_registered_block_scripts_and_styles() { + global $current_screen; + + $is_editor = ( is_admin() && $current_screen->is_block_editor() ); + + $block_registry = WP_Block_Type_Registry::get_instance(); + foreach ( $block_registry->get_all_registered() as $block_name => $block_type ) { + // Front-end styles. + if ( ! empty( $block_type->style ) ) { + wp_enqueue_style( $block_type->style ); + } + + // Front-end script. + if ( ! empty( $block_type->script ) ) { + wp_enqueue_script( $block_type->script ); + } + + // Editor styles. + if ( $is_editor && ! empty( $block_type->editor_style ) ) { + wp_enqueue_style( $block_type->editor_style ); + } + + // Editor script. + if ( $is_editor && ! empty( $block_type->editor_script ) ) { + wp_enqueue_script( $block_type->editor_script ); + } + } +} diff --git a/wp-includes/version.php b/wp-includes/version.php index 8fa834640b..b65de4fd7a 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.1-alpha-44156'; +$wp_version = '5.1-alpha-44157'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.