PluginProbe
Gutenberg / 6.6.0
Gutenberg v6.6.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 6.6.0, at lib/experiments-page.php

144 lines 4.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 __( 'Experiment 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 Widget Block', 'gutenberg' ),
51 'id' => 'gutenberg-widget-experiments',
52 )
53 );
54 add_settings_field(
55 'gutenberg-menu-block',
56 __( 'Menu Block', 'gutenberg' ),
57 'gutenberg_display_experiment_field',
58 'gutenberg-experiments',
59 'gutenberg_experiments_section',
60 array(
61 'label' => __( 'Enable Navigation Menu Block', 'gutenberg' ),
62 'id' => 'gutenberg-menu-block',
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', 'gutenberg' ),
84 'id' => 'gutenberg-full-site-editing',
85 )
86 );
87 register_setting(
88 'gutenberg-experiments',
89 'gutenberg-experiments'
90 );
91 }
92
93 add_action( 'admin_init', 'gutenberg_initialize_experiments_settings' );
94
95 /**
96 * Display a checkbox field for a Gutenberg experiment.
97 *
98 * @since 6.3.0
99 *
100 * @param array $args ( $label, $id ).
101 */
102 function gutenberg_display_experiment_field( $args ) {
103 $options = get_option( 'gutenberg-experiments' );
104 $value = isset( $options[ $args['id'] ] ) ? 1 : 0;
105 ?>
106 <label for="<?php echo $args['id']; ?>">
107 <input type="checkbox" name="<?php echo 'gutenberg-experiments[' . $args['id'] . ']'; ?>" id="<?php echo $args['id']; ?>" value="1" <?php checked( 1, $value ); ?> />
108 <?php echo $args['label']; ?>
109 </label>
110 <?php
111 }
112
113 /**
114 * Display the experiments section.
115 *
116 * @since 6.3.0
117 */
118 function gutenberg_display_experiment_section() {
119 ?>
120 <p><?php echo __( 'Gutenberg has some experimental features you can turn on. Simply select each you would like to use. These features are likely to change so it is inadvisable to use them in production.', 'gutenberg' ); ?></p>
121
122 <?php
123 }
124
125 /**
126 * Extends default editor settings with experiments settings.
127 *
128 * @param array $settings Default editor settings.
129 *
130 * @return array Filtered editor settings.
131 */
132 function gutenberg_experiments_editor_settings( $settings ) {
133 $experiments_exist = get_option( 'gutenberg-experiments' );
134 $experiments_settings = array(
135 '__experimentalEnableLegacyWidgetBlock' => $experiments_exist ? array_key_exists( 'gutenberg-widget-experiments', get_option( 'gutenberg-experiments' ) ) : false,
136 '__experimentalEnableMenuBlock' => $experiments_exist ? array_key_exists( 'gutenberg-menu-block', get_option( 'gutenberg-experiments' ) ) : false,
137 '__experimentalBlockDirectory' => $experiments_exist ? array_key_exists( 'gutenberg-block-directory', get_option( 'gutenberg-experiments' ) ) : false,
138 '__experimentalEnableFullSiteEditing' => $experiments_exist ? array_key_exists( 'gutenberg-full-site-editing', get_option( 'gutenberg-experiments' ) ) : false,
139
140 );
141 return array_merge( $settings, $experiments_settings );
142 }
143 add_filter( 'block_editor_settings', 'gutenberg_experiments_editor_settings' );
144