| @@ -24,11 +24,11 @@ | ||
| 24 | 24 | 'label' => __( 'Experimental blocks', 'gutenberg' ), |
| 25 | 25 | 'description' => __( 'Enables experimental blocks on a rolling basis as they are developed. (Warning: these blocks may have significant changes during development that cause validation errors and display issues.)', 'gutenberg' ), |
| 26 | 26 | ), |
| 27 | 27 | array( |
| 28 | - 'id' => 'gutenberg-form-blocks', | |
| 29 | - 'label' => __( 'Form and input blocks', 'gutenberg' ), | |
| 30 | - 'description' => __( 'Enables new blocks to allow building forms. You are likely to experience UX issues that are being addressed.', 'gutenberg' ), | |
| 28 | + 'id' => 'gutenberg-global-styles-inheritance-ui', | |
| 29 | + 'label' => __( 'Global Styles inheritance in the block inspector', 'gutenberg' ), | |
| 30 | + 'description' => __( 'Shows the value a block inherits from Global Styles in the block inspector when nothing is set on the block itself, and adds a control to clear a value you set back to the inherited one.', 'gutenberg' ), | |
| 31 | 31 | ), |
| 32 | 32 | array( |
| 33 | 33 | 'id' => 'gutenberg-grid-interactivity', |
| 34 | 34 | 'label' => __( 'Grid interactivity', 'gutenberg' ), |
| @@ -33,13 +33,8 @@ | ||
| 33 | 33 | 'id' => 'gutenberg-grid-interactivity', |
| 34 | 34 | 'label' => __( 'Grid interactivity', 'gutenberg' ), |
| 35 | 35 | 'description' => __( 'Enables enhancements to the Grid block that let you move and resize items in the editor canvas.', 'gutenberg' ), |
| 36 | 36 | ), |
| 37 | - array( | |
| 38 | - 'id' => 'gutenberg-classic-block-deprecation', | |
| 39 | - 'label' => __( 'Classic block deprecation', 'gutenberg' ), | |
| 40 | - 'description' => __( 'Enables UI changes aimed at deprecating the Classic block, including prompts on existing Classic blocks to migrate their content to blocks or to a Custom HTML block.', 'gutenberg' ), | |
| 41 | - ), | |
| 42 | 37 | ), |
| 43 | 38 | ), |
| 44 | 39 | array( |
| 45 | 40 | 'slug' => 'media', |
| @@ -47,16 +42,11 @@ | ||
| 47 | 42 | 'items' => array( |
| 48 | 43 | array( |
| 49 | 44 | 'id' => 'gutenberg-media-editor', |
| 50 | 45 | 'label' => __( 'Media Editor (Route)', 'gutenberg' ), |
| 51 | - 'description' => __( 'Enables a dedicated route-based media editor screen for editing media items (metadata and content).', 'gutenberg' ), | |
| 46 | + 'description' => __( 'Replaces the core Edit Media screen with a dedicated route-based media editor for editing media items (metadata and content).', 'gutenberg' ), | |
| 52 | 47 | ), |
| 53 | 48 | array( |
| 54 | - 'id' => 'gutenberg-media-editor-modal', | |
| 55 | - 'label' => __( 'Media Editor Modal', 'gutenberg' ), | |
| 56 | - 'description' => __( 'Enables an in-place modal for image editing — cropping, adjustments, and metadata — opened from blocks like the image block without navigating away from the current post.', 'gutenberg' ), | |
| 57 | - ), | |
| 58 | - array( | |
| 59 | 49 | 'id' => 'gutenberg-dataviews-media-modal', |
| 60 | 50 | 'label' => __( 'Media Upload Modal', 'gutenberg' ), |
| 61 | 51 | 'description' => __( 'Replaces the existing WordPress media modal with a new modal powered by Data Views, supporting browsing, selecting, and uploading media.', 'gutenberg' ), |
| 62 | 52 | ), |
| @@ -66,13 +56,8 @@ | ||
| 66 | 56 | 'slug' => 'data-views', |
| 67 | 57 | 'label' => _x( 'Data Views', 'experiments group name', 'gutenberg' ), |
| 68 | 58 | 'items' => array( |
| 69 | 59 | array( |
| 70 | - 'id' => 'gutenberg-content-only-inspector-fields', | |
| 71 | - 'label' => __( 'Block fields: Show dataform driven inspector fields on blocks that support them', 'gutenberg' ), | |
| 72 | - 'description' => __( 'Enables editable block inspector fields that are generated using a dataform.', 'gutenberg' ), | |
| 73 | - ), | |
| 74 | - array( | |
| 75 | 60 | 'id' => 'gutenberg-dataform-inspector', |
| 76 | 61 | 'label' => __( 'Editor Inspector: Use DataForm', 'gutenberg' ), |
| 77 | 62 | 'description' => __( 'Replaces the bespoke editor inspector panels with a unified DataForm-based implementation for Pages and Posts, matching the QuickEdit experience.', 'gutenberg' ), |
| 78 | 63 | ), |
| @@ -89,16 +74,15 @@ | ||
| 89 | 74 | ), |
| 90 | 75 | ), |
| 91 | 76 | ), |
| 92 | 77 | array( |
| 93 | - 'slug' => 'templates', | |
| 94 | - 'label' => _x( 'Templates', 'experiments group name', 'gutenberg' ), | |
| 78 | + 'slug' => 'real-time-collaboration', | |
| 79 | + 'label' => _x( 'Real-Time Collaboration', 'experiments group name', 'gutenberg' ), | |
| 95 | 80 | 'items' => array( |
| 96 | 81 | array( |
| 97 | - 'id' => 'active_templates', | |
| 98 | - 'label' => __( 'Template Activation', 'gutenberg' ), | |
| 99 | - 'description' => __( 'Allows multiple templates of the same type to be created, of which one can be active at a time. (Warning: when you deactivate this experiment, it is best to delete all created templates except for the active ones.)', 'gutenberg' ), | |
| 100 | - 'separateOption' => true, | |
| 82 | + 'id' => 'gutenberg-real-time-collaboration', | |
| 83 | + 'label' => __( 'Enable real-time collaboration', 'gutenberg' ), | |
| 84 | + 'description' => __( 'Allows multiple people to edit the same post at the same time.', 'gutenberg' ), | |
| 101 | 85 | ), |
| 102 | 86 | ), |
| 103 | 87 | ), |
| 104 | 88 | array( |
| @@ -105,13 +89,8 @@ | ||
| 105 | 89 | 'slug' => 'other', |
| 106 | 90 | 'label' => _x( 'Other', 'experiments group name', 'gutenberg' ), |
| 107 | 91 | 'items' => array( |
| 108 | 92 | array( |
| 109 | - 'id' => 'gutenberg-color-randomizer', | |
| 110 | - 'label' => __( 'Color randomizer', 'gutenberg' ), | |
| 111 | - 'description' => __( 'Enables the Global Styles color randomizer in the Site Editor; a utility that lets you mix the current color palette pseudo-randomly.', 'gutenberg' ), | |
| 112 | - ), | |
| 113 | - array( | |
| 114 | 93 | 'id' => 'gutenberg-workflow-palette', |
| 115 | 94 | 'label' => __( 'Workflow Palette', 'gutenberg' ), |
| 116 | 95 | 'description' => __( 'Enables the Workflow Palette for running workflows composed of abilities, from a unified interface.', 'gutenberg' ), |
| 117 | 96 | ), |
| @@ -122,20 +101,20 @@ | ||
| 122 | 101 | ), |
| 123 | 102 | array( |
| 124 | 103 | 'id' => 'gutenberg-guidelines', |
| 125 | 104 | 'label' => __( 'Guidelines', 'gutenberg' ), |
| 126 | - 'description' => __( 'Enables guidelines feature for managing editorial voice and tone guidelines under Settings.', 'gutenberg' ), | |
| 105 | + 'description' => __( 'Enables the Guidelines page under Settings and the experimental knowledge storage (wp_knowledge).', 'gutenberg' ), | |
| 127 | 106 | ), |
| 128 | 107 | array( |
| 129 | - 'id' => 'gutenberg-content-types', | |
| 130 | - 'label' => __( 'Content types', 'gutenberg' ), | |
| 131 | - 'description' => __( 'Enables a UI for creating and managing custom taxonomies and custom post types under Settings.', 'gutenberg' ), | |
| 132 | - ), | |
| 133 | - array( | |
| 134 | 108 | 'id' => 'gutenberg-dashboard-widgets', |
| 135 | 109 | 'label' => __( 'New Dashboard experience', 'gutenberg' ), |
| 136 | 110 | 'description' => __( 'Enables a new dashboard experience with resizable, reorderable widgets that plugins can register and users can personalize.', 'gutenberg' ), |
| 137 | 111 | ), |
| 112 | + array( | |
| 113 | + 'id' => 'gutenberg-react-19', | |
| 114 | + 'label' => __( 'React 19', 'gutenberg' ), | |
| 115 | + 'description' => __( 'Registers React 19 as the bundled React version, replacing the default React 18 scripts.', 'gutenberg' ), | |
| 116 | + ), | |
| 138 | 117 | ), |
| 139 | 118 | ), |
| 140 | 119 | ); |
| 141 | 120 | |
| @@ -150,16 +129,8 @@ | ||
| 150 | 129 | 'group' => $group['slug'], |
| 151 | 130 | 'group_label' => $group['label'], |
| 152 | 131 | ); |
| 153 | 132 | |
| 154 | - // Metadata-only entry: values for separateOption experiments live in | |
| 155 | - // their own option (e.g. `active_templates`). Surfaced here so the UI | |
| 156 | - // can render them from the settings schema. | |
| 157 | - if ( ! empty( $experiment['separateOption'] ) ) { | |
| 158 | - $property['separate_option'] = true; | |
| 159 | - $property['option_name'] = $experiment['id']; | |
| 160 | - } | |
| 161 | - | |
| 162 | 133 | $properties[ $experiment['id'] ] = $property; |
| 163 | 134 | } |
| 164 | 135 | } |
| 165 | 136 | |
| @@ -181,23 +152,8 @@ | ||
| 181 | 152 | |
| 182 | 153 | add_action( 'rest_api_init', 'gutenberg_initialize_experiments_settings' ); |
| 183 | 154 | |
| 184 | 155 | /** |
| 185 | - * Registers the Experiments submenu page under the Gutenberg menu. | |
| 186 | - */ | |
| 187 | -function gutenberg_experiments_menu() { | |
| 188 | - add_submenu_page( | |
| 189 | - 'gutenberg', | |
| 190 | - __( 'Experiments Settings', 'gutenberg' ), | |
| 191 | - __( 'Experiments', 'gutenberg' ), | |
| 192 | - 'manage_options', | |
| 193 | - 'experiments-wp-admin', | |
| 194 | - 'gutenberg_experiments_wp_admin_render_page' | |
| 195 | - ); | |
| 196 | -} | |
| 197 | -add_action( 'admin_menu', 'gutenberg_experiments_menu' ); | |
| 198 | - | |
| 199 | -/** | |
| 200 | 156 | * Allows the legacy `gutenberg-experiments` route. Without this, accessing |
| 201 | 157 | * `?page=gutenberg-experiments` results in an HTTP 403 error. |
| 202 | 158 | * |
| 203 | 159 | * Allowing the route is done by adding a wp-admin submenu page that won't be rendered. |
| @@ -211,10 +167,8 @@ | ||
| 211 | 167 | * Redirects the legacy `?page=gutenberg-experiments` URL to the new |
| 212 | 168 | * `?page=experiments-wp-admin` URL. |
| 213 | 169 | */ |
| 214 | 170 | function gutenberg_redirect_legacy_experiments_page() { |
| 215 | - wp_safe_redirect( admin_url( 'admin.php?page=experiments-wp-admin' ) ); | |
| 171 | + wp_safe_redirect( admin_url( 'options-general.php?page=experiments-wp-admin' ) ); | |
| 216 | 172 | exit; |
| 217 | 173 | } |
| 218 | 174 | add_action( 'load-admin_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); |
| 219 | -add_action( 'load-toplevel_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); | |
| 220 | -add_action( 'load-gutenberg_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); | |