[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * The block-based widgets editor, for use in widgets.php. 4 * 5 * @package WordPress 6 * @subpackage Administration 7 */ 8 9 // Don't load directly. 10 if ( ! defined( 'ABSPATH' ) ) { 11 die( '-1' ); 12 } 13 14 // Flag that we're loading the block editor. 15 $current_screen = get_current_screen(); 16 $current_screen->is_block_editor( true ); 17 18 $block_editor_context = new WP_Block_Editor_Context( array( 'name' => 'core/edit-widgets' ) ); 19 20 $preload_paths = array( 21 array( rest_get_route_for_post_type_items( 'attachment' ), 'OPTIONS' ), 22 '/wp/v2/widget-types?context=edit&per_page=-1', 23 '/wp/v2/sidebars?context=edit&per_page=-1', 24 '/wp/v2/widgets?context=edit&per_page=-1&_embed=about', 25 ); 26 block_editor_rest_api_preload( $preload_paths, $block_editor_context ); 27 28 $editor_settings = get_block_editor_settings( 29 array_merge( get_legacy_widget_block_editor_settings(), array( 'styles' => get_block_editor_theme_styles() ) ), 30 $block_editor_context 31 ); 32 33 // The widgets editor does not support the Block Directory, so don't load any of 34 // its assets. This also prevents 'wp-editor' from being enqueued which we 35 // cannot load in the widgets screen because many widget scripts rely on `wp.editor`. 36 remove_action( 'enqueue_block_editor_assets', 'wp_enqueue_editor_block_directory_assets' ); 37 38 wp_add_inline_script( 39 'wp-edit-widgets', 40 sprintf( 41 'wp.domReady( function() { 42 wp.editWidgets.initialize( "widgets-editor", %s ); 43 } );', 44 wp_json_encode( $editor_settings ) 45 ) 46 ); 47 48 // Preload server-registered block schemas. 49 wp_add_inline_script( 50 'wp-blocks', 51 'wp.blocks.unstable__bootstrapServerSideBlockDefinitions(' . wp_json_encode( get_block_editor_server_block_settings() ) . ');' 52 ); 53 54 // Preload server-registered block bindings sources. 55 $registered_sources = get_all_registered_block_bindings_sources(); 56 if ( ! empty( $registered_sources ) ) { 57 $filtered_sources = array(); 58 foreach ( $registered_sources as $source ) { 59 $filtered_sources[] = array( 60 'name' => $source->name, 61 'label' => $source->label, 62 'usesContext' => $source->uses_context, 63 ); 64 } 65 $script = sprintf( 'for ( const source of %s ) { wp.blocks.registerBlockBindingsSource( source ); }', wp_json_encode( $filtered_sources ) ); 66 wp_add_inline_script( 67 'wp-blocks', 68 $script 69 ); 70 } 71 72 wp_add_inline_script( 73 'wp-blocks', 74 sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( get_block_categories( $block_editor_context ) ) ), 75 'after' 76 ); 77 78 wp_enqueue_script( 'wp-edit-widgets' ); 79 wp_enqueue_script( 'admin-widgets' ); 80 wp_enqueue_style( 'wp-edit-widgets' ); 81 82 /** This action is documented in wp-admin/edit-form-blocks.php */ 83 do_action( 'enqueue_block_editor_assets' ); 84 85 /** This action is documented in wp-admin/widgets-form.php */ 86 do_action( 'sidebar_admin_setup' ); 87 88 require_once ABSPATH . 'wp-admin/admin-header.php'; 89 90 /** This action is documented in wp-admin/widgets-form.php */ 91 do_action( 'widgets_admin_page' ); 92 ?> 93 94 <div id="widgets-editor" class="blocks-widgets-container"> 95 <?php // JavaScript is disabled. ?> 96 <div class="wrap hide-if-js widgets-editor-no-js"> 97 <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> 98 <?php 99 if ( file_exists( WP_PLUGIN_DIR . '/classic-widgets/classic-widgets.php' ) ) { 100 // If Classic Widgets is already installed, provide a link to activate the plugin. 101 $installed = true; 102 $plugin_activate_url = wp_nonce_url( 'plugins.php?action=activate&plugin=classic-widgets/classic-widgets.php', 'activate-plugin_classic-widgets/classic-widgets.php' ); 103 $message = sprintf( 104 /* translators: %s: Link to activate the Classic Widgets plugin. */ 105 __( 'The block widgets require JavaScript. Please enable JavaScript in your browser settings, or activate the <a href="%s">Classic Widgets plugin</a>.' ), 106 esc_url( $plugin_activate_url ) 107 ); 108 } else { 109 // If Classic Widgets is not installed, provide a link to install it. 110 $installed = false; 111 $plugin_install_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=classic-widgets' ), 'install-plugin_classic-widgets' ); 112 $message = sprintf( 113 /* translators: %s: A link to install the Classic Widgets plugin. */ 114 __( 'The block widgets require JavaScript. Please enable JavaScript in your browser settings, or install the <a href="%s">Classic Widgets plugin</a>.' ), 115 esc_url( $plugin_install_url ) 116 ); 117 } 118 /** 119 * Filters the message displayed in the block widget interface when JavaScript is 120 * not enabled in the browser. 121 * 122 * @since 6.4.0 123 * 124 * @param string $message The message being displayed. 125 * @param bool $installed Whether the Classic Widget plugin is installed. 126 */ 127 $message = apply_filters( 'block_widgets_no_javascript_message', $message, $installed ); 128 wp_admin_notice( 129 $message, 130 array( 131 'type' => 'error', 132 'additional_classes' => array( 'hide-if-js' ), 133 ) 134 ); 135 ?> 136 </div> 137 </div> 138 139 <?php 140 /** This action is documented in wp-admin/widgets-form.php */ 141 do_action( 'sidebar_admin_page' ); 142 143 require_once ABSPATH . 'wp-admin/admin-footer.php';
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Thu Nov 21 08:20:01 2024 | Cross-referenced by PHPXref |