PluginProbe
Gutenberg / 8.3.0
Gutenberg v8.3.0
24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 All 403 releases
gutenberg / lib / experiments-page.php

experiments-page.php in Gutenberg 8.3.0, at lib/experiments-page.php

173 lines 5.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Bootstraping the Gutenberg experiments page.
4 *
5 * @package gutenberg
6 */
7
8 /**
9 * The main entry point for the Gutenberg experiments page.
10 *
11 * @since 6.3.0
12 */
13 function the_gutenberg_experiments() {
14 ?>
15 <div
16 id="experiments-editor"
17 class="wrap"
18 >
19 <h1><?php echo __( 'Experimental settings', 'gutenberg' ); ?></h1>
20 <?php settings_errors(); ?>
21 <form method="post" action="options.php">
22 <?php settings_fields( 'gutenberg-experiments' ); ?>
23 <?php do_settings_sections( 'gutenberg-experiments' ); ?>
24 <?php submit_button(); ?>
25 </form>
26 </div>
27 <?php
28 }
29
30 /**
31 * Set up the experiments settings.
32 *
33 * @since 6.3.0
34 */
35 function gutenberg_initialize_experiments_settings() {
36 add_settings_section(
37 'gutenberg_experiments_section',
38 // The empty string ensures the render function won't output a h2.
39 '',
40 'gutenberg_display_experiment_section',
41 'gutenberg-experiments'
42 );
43 add_settings_field(
44 'gutenberg-widget-experiments',
45 __( 'Widgets', 'gutenberg' ),
46 'gutenberg_display_experiment_field',
47 'gutenberg-experiments',
48 'gutenberg_experiments_section',
49 array(
50 'label' => __( 'Enable Widgets screen and Legacy Widgets block', 'gutenberg' ),
51 'id' => 'gutenberg-widget-experiments',
52 )
53 );
54 add_settings_field(
55 'gutenberg-navigation',
56 __( 'Navigation', 'gutenberg' ),
57 'gutenberg_display_experiment_field',
58 'gutenberg-experiments',
59 'gutenberg_experiments_section',
60 array(
61 'label' => __( 'Enable Navigation screen', 'gutenberg' ),
62 'id' => 'gutenberg-navigation',
63 )
64 );
65 add_settings_field(
66 'gutenberg-block-directory',
67 __( 'Block Directory', 'gutenberg' ),
68 'gutenberg_display_experiment_field',
69 'gutenberg-experiments',
70 'gutenberg_experiments_section',
71 array(
72 'label' => __( 'Enable block directory search', 'gutenberg' ),
73 'id' => 'gutenberg-block-directory',
74 )
75 );
76 add_settings_field(
77 'gutenberg-full-site-editing',
78 __( 'Full Site Editing', 'gutenberg' ),
79 'gutenberg_display_experiment_field',
80 'gutenberg-experiments',
81 'gutenberg_experiments_section',
82 array(
83 'label' => __( 'Enable Full Site Editing (Warning: this will replace your theme and cause potentially irreversible changes to your site. We recommend using this only in a development environment.)', 'gutenberg' ),
84 'id' => 'gutenberg-full-site-editing',
85 )
86 );
87 add_settings_field(
88 'gutenberg-full-site-editing-demo',
89 __( 'Full Site Editing Demo Templates', 'gutenberg' ),
90 'gutenberg_display_experiment_field',
91 'gutenberg-experiments',
92 'gutenberg_experiments_section',
93 array(
94 'label' => __( 'Enable Full Site Editing demo templates', 'gutenberg' ),
95 'id' => 'gutenberg-full-site-editing-demo',
96 )
97 );
98 add_settings_field(
99 'gutenberg-rich-image-editing',
100 __( 'Rich Image Editing', 'gutenberg' ),
101 'gutenberg_display_experiment_field',
102 'gutenberg-experiments',
103 'gutenberg_experiments_section',
104 array(
105 'label' => __( 'Enable inline rich image editing', 'gutenberg' ),
106 'id' => 'gutenberg-rich-image-editing',
107 )
108 );
109 register_setting(
110 'gutenberg-experiments',
111 'gutenberg-experiments'
112 );
113 }
114
115 add_action( 'admin_init', 'gutenberg_initialize_experiments_settings' );
116
117 /**
118 * Display a checkbox field for a Gutenberg experiment.
119 *
120 * @since 6.3.0
121 *
122 * @param array $args ( $label, $id ).
123 */
124 function gutenberg_display_experiment_field( $args ) {
125 $options = get_option( 'gutenberg-experiments' );
126 $value = isset( $options[ $args['id'] ] ) ? 1 : 0;
127 ?>
128 <label for="<?php echo $args['id']; ?>">
129 <input type="checkbox" name="<?php echo 'gutenberg-experiments[' . $args['id'] . ']'; ?>" id="<?php echo $args['id']; ?>" value="1" <?php checked( 1, $value ); ?> />
130 <?php echo $args['label']; ?>
131 </label>
132 <?php
133 }
134
135 /**
136 * Display the experiments section.
137 *
138 * @since 6.3.0
139 */
140 function gutenberg_display_experiment_section() {
141 ?>
142 <p><?php echo __( "The block editor includes experimental features that are useable while they're in development. Select the ones you'd like to enable. These features are likely to change, so avoid using them in production.", 'gutenberg' ); ?></p>
143
144 <?php
145 }
146
147 /**
148 * Extends default editor settings with experiments settings.
149 *
150 * @param array $settings Default editor settings.
151 *
152 * @return array Filtered editor settings.
153 */
154 function gutenberg_experiments_editor_settings( $settings ) {
155 $experiments_settings = array(
156 '__experimentalEnableLegacyWidgetBlock' => gutenberg_is_experiment_enabled( 'gutenberg-widget-experiments' ),
157 '__experimentalBlockDirectory' => gutenberg_is_experiment_enabled( 'gutenberg-block-directory' ),
158 '__experimentalEnableFullSiteEditing' => gutenberg_is_experiment_enabled( 'gutenberg-full-site-editing' ),
159 '__experimentalEnableFullSiteEditingDemo' => gutenberg_is_experiment_enabled( 'gutenberg-full-site-editing-demo' ),
160 '__experimentalEnableRichImageEditing' => gutenberg_is_experiment_enabled( 'gutenberg-rich-image-editing' ),
161 );
162
163 $gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) );
164 if ( false !== $gradient_presets ) {
165 $experiments_settings['gradients'] = $gradient_presets;
166 }
167
168 $experiments_settings['disableCustomGradients'] = get_theme_support( 'disable-custom-gradients' );
169
170 return array_merge( $settings, $experiments_settings );
171 }
172 add_filter( 'block_editor_settings', 'gutenberg_experiments_editor_settings' );
173