PluginProbe
Elementor Website Builder – more than just a page builder / 3.34.1
Elementor Website Builder – more than just a page builder v3.34.1
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | includes/settings/settings.php +144 -6 4.2.0-dev23.34.1 View file →
@@ -1,10 +1,15 @@
1 1 <?php
2 2 namespace Elementor;
3 3
4 +use Elementor\Core\Admin\Menu\Admin_Menu_Manager;
4 5 use Elementor\Core\Files\Fonts\Google_Font;
6 +use Elementor\Includes\Settings\AdminMenuItems\Admin_Menu_Item;
7 +use Elementor\Includes\Settings\AdminMenuItems\Get_Help_Menu_Item;
8 +use Elementor\Includes\Settings\AdminMenuItems\Getting_Started_Menu_Item;
5 9 use Elementor\Modules\Promotions\Module as Promotions_Module;
6 10 use Elementor\TemplateLibrary\Source_Local;
11 +use Elementor\Modules\Home\Module as Home_Module;
7 12 use Elementor\Modules\EditorOne\Classes\Menu_Data_Provider;
8 13 use Elementor\Includes\Settings\AdminMenuItems\Editor_One_Home_Menu;
9 14 use Elementor\Includes\Settings\AdminMenuItems\Editor_One_Settings_Menu;
10 15
@@ -42,8 +47,13 @@
42 47 */
43 48 const TAB_GENERAL = 'general';
44 49
45 50 /**
51 + * Settings page style tab slug.
52 + */
53 + const TAB_STYLE = 'style';
54 +
55 + /**
46 56 * Settings page integrations tab slug.
47 57 */
48 58 const TAB_INTEGRATIONS = 'integrations';
49 59
@@ -58,9 +68,9 @@
58 68 const TAB_PERFORMANCE = 'performance';
59 69
60 70 const ADMIN_MENU_PRIORITY = 10;
61 71
62 - const MENU_CAPABILITY_EDIT_POSTS = 'edit_posts';
72 + public Home_Module $home_module;
63 73
64 74 /**
65 75 * Register admin menu.
66 76 *
@@ -71,9 +81,13 @@
71 81 * @since 1.0.0
72 82 * @access public
73 83 */
74 84 public function register_admin_menu() {
75 - if ( ! current_user_can( self::MENU_CAPABILITY_EDIT_POSTS ) ) {
85 + global $menu;
86 +
87 + $menu[] = [ '', 'read', 'separator-elementor', '', 'wp-menu-separator elementor' ]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
88 +
89 + if ( ! current_user_can( 'manage_options' ) ) {
76 90 return;
77 91 }
78 92
79 93 add_menu_page(
@@ -78,14 +92,25 @@
78 92
79 93 add_menu_page(
80 94 esc_html__( 'Elementor', 'elementor' ),
81 95 esc_html__( 'Elementor', 'elementor' ),
82 - self::MENU_CAPABILITY_EDIT_POSTS,
96 + 'manage_options',
83 97 self::PAGE_ID,
84 - [ $this, 'display_home_screen' ],
98 + [
99 + $this,
100 + $this->home_module->is_experiment_active() ? 'display_home_screen' : 'display_settings_page',
101 + ],
85 102 '',
86 103 '58.5'
87 104 );
105 +
106 + if ( $this->home_module->is_experiment_active() ) {
107 + add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu ) {
108 + if ( ! $this->is_editor_one_active() ) {
109 + $admin_menu->register( 'elementor-settings', new Admin_Menu_Item( $this ) );
110 + }
111 + }, 0 );
112 + }
88 113 }
89 114
90 115 public function display_home_screen() {
91 116 echo '<div id="e-home-screen"></div>';
@@ -90,8 +115,62 @@
90 115 public function display_home_screen() {
91 116 echo '<div id="e-home-screen"></div>';
92 117 }
93 118
119 + /**
120 + * Reorder the Elementor menu items in admin.
121 + * Based on WC.
122 + *
123 + * @since 2.4.0
124 + *
125 + * @param array $menu_order Menu order.
126 + * @return array
127 + */
128 + public function menu_order( $menu_order ) {
129 + // Initialize our custom order array.
130 + $elementor_menu_order = [];
131 +
132 + // Get the index of our custom separator.
133 + $elementor_separator = array_search( 'separator-elementor', $menu_order, true );
134 +
135 + // Get index of library menu.
136 + $elementor_library = array_search( Source_Local::ADMIN_MENU_SLUG, $menu_order, true );
137 +
138 + // Loop through menu order and do some rearranging.
139 + foreach ( $menu_order as $index => $item ) {
140 + if ( 'elementor' === $item ) {
141 + $elementor_menu_order[] = 'separator-elementor';
142 + $elementor_menu_order[] = $item;
143 + $elementor_menu_order[] = Source_Local::ADMIN_MENU_SLUG;
144 +
145 + unset( $menu_order[ $elementor_separator ] );
146 + unset( $menu_order[ $elementor_library ] );
147 + } elseif ( ! in_array( $item, [ 'separator-elementor' ], true ) ) {
148 + $elementor_menu_order[] = $item;
149 + }
150 + }
151 +
152 + // Return order.
153 + return $elementor_menu_order;
154 + }
155 +
156 + /**
157 + * Register Elementor knowledge base sub-menu.
158 + *
159 + * Add new Elementor knowledge base sub-menu under the main Elementor menu.
160 + *
161 + * Fired by `admin_menu` action.
162 + *
163 + * @since 2.0.3
164 + * @access private
165 + */
166 + private function register_knowledge_base_menu( Admin_Menu_Manager $admin_menu ) {
167 + if ( ! Plugin::instance()->modules_manager->get_modules( 'editor-one' ) ) {
168 + $admin_menu->register( 'elementor-getting-started', new Getting_Started_Menu_Item() );
169 + $admin_menu->register( 'go_knowledge_base_site', new Get_Help_Menu_Item() );
170 + }
171 + }
172 +
94 173 private function register_editor_one_settings_menu( Menu_Data_Provider $menu_data_provider ) {
95 174 $menu_data_provider->register_menu( new Editor_One_Settings_Menu() );
96 175 }
97 176
@@ -98,9 +177,34 @@
98 177 private function register_editor_one_home_menu( Menu_Data_Provider $menu_data_provider ) {
99 178 $menu_data_provider->register_menu( new Editor_One_Home_Menu() );
100 179 }
101 180
181 + private function is_editor_one_active(): bool {
182 + return (bool) Plugin::instance()->modules_manager->get_modules( 'editor-one' );
183 + }
184 +
102 185 /**
186 + * Go Elementor Pro.
187 + *
188 + * Redirect the Elementor Pro page the clicking the Elementor Pro menu link.
189 + *
190 + * Fired by `admin_init` action.
191 + *
192 + * @since 2.0.3
193 + * @access public
194 + */
195 + public function handle_external_redirects() {
196 + if ( empty( $_GET['page'] ) ) {
197 + return;
198 + }
199 +
200 + if ( 'go_knowledge_base_site' === $_GET['page'] ) {
201 + wp_redirect( Get_Help_Menu_Item::URL );
202 + die;
203 + }
204 + }
205 +
206 + /**
103 207 * On admin init.
104 208 *
105 209 * Preform actions on WordPress admin initialization.
106 210 *
@@ -109,12 +213,32 @@
109 213 * @since 2.0.0
110 214 * @access public
111 215 */
112 216 public function on_admin_init() {
217 + $this->handle_external_redirects();
218 +
113 219 $this->maybe_remove_all_admin_notices();
114 220 }
115 221
116 222 /**
223 + * Change "Settings" menu name.
224 + *
225 + * Update the name of the Settings admin menu from "Elementor" to "Settings".
226 + *
227 + * Fired by `admin_menu` action.
228 + *
229 + * @since 1.0.0
230 + * @access public
231 + */
232 + public function admin_menu_change_name() {
233 + $menu_name = $this->home_module->is_experiment_active()
234 + ? esc_html__( 'Home', 'elementor' )
235 + : esc_html__( 'Settings', 'elementor' );
236 +
237 + Utils::change_submenu_first_item_label( 'elementor', $menu_name );
238 + }
239 +
240 + /**
117 241 * Update CSS print method.
118 242 *
119 243 * Clear post CSS cache.
120 244 *
@@ -400,8 +524,9 @@
400 524 * @access private
401 525 */
402 526 private function maybe_remove_all_admin_notices() {
403 527 $elementor_pages = [
528 + 'elementor-getting-started',
404 529 'elementor-system-info',
405 530 'e-form-submissions',
406 531 'elementor_custom_fonts',
407 532 'elementor_custom_icons',
@@ -441,8 +566,10 @@
441 566 */
442 567 public function __construct() {
443 568 parent::__construct();
444 569
570 + $this->home_module = new Home_Module();
571 +
445 572 add_action( 'admin_init', [ $this, 'on_admin_init' ] );
446 573 add_filter( 'elementor/generator_tag/settings', [ $this, 'add_generator_tag_settings' ] );
447 574
448 575 add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 20 );
@@ -447,11 +574,22 @@
447 574
448 575 add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 20 );
449 576
450 577 add_action( 'elementor/editor-one/menu/register', function ( Menu_Data_Provider $menu_data_provider ) {
451 - $this->register_editor_one_settings_menu( $menu_data_provider );
452 - $this->register_editor_one_home_menu( $menu_data_provider );
578 + if ( $this->home_module->is_experiment_active() ) {
579 + $this->register_editor_one_settings_menu( $menu_data_provider );
580 + $this->register_editor_one_home_menu( $menu_data_provider );
581 + }
453 582 } );
583 +
584 + add_action( 'elementor/admin/menu/register', function ( Admin_Menu_Manager $admin_menu ) {
585 + $this->register_knowledge_base_menu( $admin_menu );
586 + }, Promotions_Module::ADMIN_MENU_PRIORITY - 1 );
587 +
588 + add_action( 'admin_menu', [ $this, 'admin_menu_change_name' ], 200 );
589 +
590 + add_filter( 'custom_menu_order', '__return_true' );
591 + add_filter( 'menu_order', [ $this, 'menu_order' ] );
454 592
455 593 $clear_cache_callback = [ Plugin::$instance->files_manager, 'clear_cache' ];
456 594
457 595 // Clear CSS Meta after change css related methods.