58 |
58 |
59 $submenu['edit.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name ); |
59 $submenu['edit.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name ); |
60 } |
60 } |
61 unset($tax); |
61 unset($tax); |
62 |
62 |
63 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'none' ); |
63 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'dashicons-admin-media' ); |
64 $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php'); |
64 $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php'); |
65 /* translators: add new file */ |
65 /* translators: add new file */ |
66 $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php'); |
66 $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php'); |
67 foreach ( get_taxonomies_for_attachments( 'objects' ) as $tax ) { |
67 foreach ( get_taxonomies_for_attachments( 'objects' ) as $tax ) { |
68 if ( ! $tax->show_ui || ! $tax->show_in_menu ) |
68 if ( ! $tax->show_ui || ! $tax->show_in_menu ) |
70 |
70 |
71 $submenu['upload.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&post_type=attachment' ); |
71 $submenu['upload.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&post_type=attachment' ); |
72 } |
72 } |
73 unset($tax); |
73 unset($tax); |
74 |
74 |
75 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'none' ); |
75 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'dashicons-admin-links' ); |
76 $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' ); |
76 $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' ); |
77 /* translators: add new links */ |
77 /* translators: add new links */ |
78 $submenu['link-manager.php'][10] = array( _x('Add New', 'link'), 'manage_links', 'link-add.php' ); |
78 $submenu['link-manager.php'][10] = array( _x('Add New', 'link'), 'manage_links', 'link-add.php' ); |
79 $submenu['link-manager.php'][15] = array( __('Link Categories'), 'manage_categories', 'edit-tags.php?taxonomy=link_category' ); |
79 $submenu['link-manager.php'][15] = array( __('Link Categories'), 'manage_categories', 'edit-tags.php?taxonomy=link_category' ); |
80 |
80 |
81 $menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'menu-top menu-icon-page', 'menu-pages', 'none' ); |
81 $menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'menu-top menu-icon-page', 'menu-pages', 'dashicons-admin-page' ); |
82 $submenu['edit.php?post_type=page'][5] = array( __('All Pages'), 'edit_pages', 'edit.php?post_type=page' ); |
82 $submenu['edit.php?post_type=page'][5] = array( __('All Pages'), 'edit_pages', 'edit.php?post_type=page' ); |
83 /* translators: add new page */ |
83 /* translators: add new page */ |
84 $submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), get_post_type_object( 'page' )->cap->create_posts, 'post-new.php?post_type=page' ); |
84 $submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), get_post_type_object( 'page' )->cap->create_posts, 'post-new.php?post_type=page' ); |
85 $i = 15; |
85 $i = 15; |
86 foreach ( get_taxonomies( array(), 'objects' ) as $tax ) { |
86 foreach ( get_taxonomies( array(), 'objects' ) as $tax ) { |
105 // Check if it should be a submenu. |
105 // Check if it should be a submenu. |
106 if ( $ptype_obj->show_in_menu !== true ) |
106 if ( $ptype_obj->show_in_menu !== true ) |
107 continue; |
107 continue; |
108 $ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu; // If we're to use $_wp_last_object_menu, increment it first. |
108 $ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu; // If we're to use $_wp_last_object_menu, increment it first. |
109 $ptype_for_id = sanitize_html_class( $ptype ); |
109 $ptype_for_id = sanitize_html_class( $ptype ); |
|
110 |
110 if ( is_string( $ptype_obj->menu_icon ) ) { |
111 if ( is_string( $ptype_obj->menu_icon ) ) { |
111 $menu_icon = esc_url( $ptype_obj->menu_icon ); |
112 // Special handling for data:image/svg+xml and Dashicons. |
|
113 if ( 0 === strpos( $ptype_obj->menu_icon, 'data:image/svg+xml;base64,' ) || 0 === strpos( $ptype_obj->menu_icon, 'dashicons-' ) ) { |
|
114 $menu_icon = $ptype_obj->menu_icon; |
|
115 } else { |
|
116 $menu_icon = esc_url( $ptype_obj->menu_icon ); |
|
117 } |
112 $ptype_class = $ptype_for_id; |
118 $ptype_class = $ptype_for_id; |
113 } else { |
119 } else { |
114 $menu_icon = 'none'; |
120 $menu_icon = 'dashicons-admin-post'; |
115 $ptype_class = 'post'; |
121 $ptype_class = 'post'; |
116 } |
122 } |
117 |
123 |
118 // if $ptype_menu_position is already populated or will be populated by a hard-coded value below, increment the position. |
124 /* |
|
125 * If $ptype_menu_position is already populated or will be populated |
|
126 * by a hard-coded value below, increment the position. |
|
127 */ |
119 $core_menu_positions = array(59, 60, 65, 70, 75, 80, 85, 99); |
128 $core_menu_positions = array(59, 60, 65, 70, 75, 80, 85, 99); |
120 while ( isset($menu[$ptype_menu_position]) || in_array($ptype_menu_position, $core_menu_positions) ) |
129 while ( isset($menu[$ptype_menu_position]) || in_array($ptype_menu_position, $core_menu_positions) ) |
121 $ptype_menu_position++; |
130 $ptype_menu_position++; |
122 |
131 |
123 $menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon ); |
132 $menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon ); |
136 |
145 |
137 $menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' ); |
146 $menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' ); |
138 |
147 |
139 $appearance_cap = current_user_can( 'switch_themes') ? 'switch_themes' : 'edit_theme_options'; |
148 $appearance_cap = current_user_can( 'switch_themes') ? 'switch_themes' : 'edit_theme_options'; |
140 |
149 |
141 $menu[60] = array( __('Appearance'), $appearance_cap, 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' ); |
150 $menu[60] = array( __( 'Appearance' ), $appearance_cap, 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'dashicons-admin-appearance' ); |
142 $submenu['themes.php'][5] = array( __( 'Themes' ), $appearance_cap, 'themes.php' ); |
151 $submenu['themes.php'][5] = array( __( 'Themes' ), $appearance_cap, 'themes.php' ); |
143 $submenu['themes.php'][6] = array( __( 'Customize' ), 'edit_theme_options', 'customize.php', 'hide-if-no-customize' ); |
152 |
144 if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) ) |
153 $customize_url = add_query_arg( 'return', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), 'customize.php' ); |
145 $submenu['themes.php'][10] = array(__( 'Menus' ), 'edit_theme_options', 'nav-menus.php'); |
154 $submenu['themes.php'][6] = array( __( 'Customize' ), 'customize', esc_url( $customize_url ), '', 'hide-if-no-customize' ); |
|
155 |
|
156 if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) ) { |
|
157 $submenu['themes.php'][10] = array( __( 'Menus' ), 'edit_theme_options', 'nav-menus.php' ); |
|
158 } |
|
159 |
|
160 if ( current_theme_supports( 'custom-header' ) && current_user_can( 'customize') ) { |
|
161 $customize_header_url = add_query_arg( array( 'autofocus' => array( 'control' => 'header_image' ) ), $customize_url ); |
|
162 $submenu['themes.php'][15] = array( __( 'Header' ), $appearance_cap, esc_url( $customize_header_url ), '', 'hide-if-no-customize' ); |
|
163 } |
|
164 |
|
165 if ( current_theme_supports( 'custom-background' ) && current_user_can( 'customize') ) { |
|
166 $customize_background_url = add_query_arg( array( 'autofocus' => array( 'control' => 'background_image' ) ), $customize_url ); |
|
167 $submenu['themes.php'][20] = array( __( 'Background' ), $appearance_cap, esc_url( $customize_background_url ), '', 'hide-if-no-customize' ); |
|
168 } |
|
169 |
|
170 unset( $customize_url ); |
146 |
171 |
147 unset( $appearance_cap ); |
172 unset( $appearance_cap ); |
148 |
173 |
149 // Add 'Editor' to the bottom of the Appearance menu. |
174 // Add 'Editor' to the bottom of the Appearance menu. |
150 if ( ! is_multisite() ) |
175 if ( ! is_multisite() ) |
172 } |
197 } |
173 |
198 |
174 unset( $update_data ); |
199 unset( $update_data ); |
175 |
200 |
176 if ( current_user_can('list_users') ) |
201 if ( current_user_can('list_users') ) |
177 $menu[70] = array( __('Users'), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'none' ); |
202 $menu[70] = array( __('Users'), 'list_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' ); |
178 else |
203 else |
179 $menu[70] = array( __('Profile'), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'none' ); |
204 $menu[70] = array( __('Profile'), 'read', 'profile.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' ); |
180 |
205 |
181 if ( current_user_can('list_users') ) { |
206 if ( current_user_can('list_users') ) { |
182 $_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php. |
207 $_wp_real_parent_file['profile.php'] = 'users.php'; // Back-compat for plugins adding submenus to profile.php. |
183 $submenu['users.php'][5] = array(__('All Users'), 'list_users', 'users.php'); |
208 $submenu['users.php'][5] = array(__('All Users'), 'list_users', 'users.php'); |
184 if ( current_user_can('create_users') ) |
209 if ( current_user_can( 'create_users' ) ) { |
185 $submenu['users.php'][10] = array(_x('Add New', 'user'), 'create_users', 'user-new.php'); |
210 $submenu['users.php'][10] = array(_x('Add New', 'user'), 'create_users', 'user-new.php'); |
186 else |
211 } elseif ( is_multisite() ) { |
187 $submenu['users.php'][10] = array(_x('Add New', 'user'), 'promote_users', 'user-new.php'); |
212 $submenu['users.php'][10] = array(_x('Add New', 'user'), 'promote_users', 'user-new.php'); |
|
213 } |
188 |
214 |
189 $submenu['users.php'][15] = array(__('Your Profile'), 'read', 'profile.php'); |
215 $submenu['users.php'][15] = array(__('Your Profile'), 'read', 'profile.php'); |
190 } else { |
216 } else { |
191 $_wp_real_parent_file['users.php'] = 'profile.php'; |
217 $_wp_real_parent_file['users.php'] = 'profile.php'; |
192 $submenu['profile.php'][5] = array(__('Your Profile'), 'read', 'profile.php'); |
218 $submenu['profile.php'][5] = array(__('Your Profile'), 'read', 'profile.php'); |
193 if ( current_user_can('create_users') ) |
219 if ( current_user_can( 'create_users' ) ) { |
194 $submenu['profile.php'][10] = array(__('Add New User'), 'create_users', 'user-new.php'); |
220 $submenu['profile.php'][10] = array(__('Add New User'), 'create_users', 'user-new.php'); |
195 else |
221 } elseif ( is_multisite() ) { |
196 $submenu['profile.php'][10] = array(__('Add New User'), 'promote_users', 'user-new.php'); |
222 $submenu['profile.php'][10] = array(__('Add New User'), 'promote_users', 'user-new.php'); |
197 } |
223 } |
198 |
224 } |
199 $menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'none' ); |
225 |
|
226 $menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'dashicons-admin-tools' ); |
200 $submenu['tools.php'][5] = array( __('Available Tools'), 'edit_posts', 'tools.php' ); |
227 $submenu['tools.php'][5] = array( __('Available Tools'), 'edit_posts', 'tools.php' ); |
201 $submenu['tools.php'][10] = array( __('Import'), 'import', 'import.php' ); |
228 $submenu['tools.php'][10] = array( __('Import'), 'import', 'import.php' ); |
202 $submenu['tools.php'][15] = array( __('Export'), 'export', 'export.php' ); |
229 $submenu['tools.php'][15] = array( __('Export'), 'export', 'export.php' ); |
203 if ( is_multisite() && !is_main_site() ) |
230 if ( is_multisite() && !is_main_site() ) |
204 $submenu['tools.php'][25] = array( __('Delete Site'), 'manage_options', 'ms-delete-site.php' ); |
231 $submenu['tools.php'][25] = array( __('Delete Site'), 'delete_site', 'ms-delete-site.php' ); |
205 if ( ! is_multisite() && defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE ) |
232 if ( ! is_multisite() && defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE ) |
206 $submenu['tools.php'][50] = array(__('Network Setup'), 'manage_options', 'network.php'); |
233 $submenu['tools.php'][50] = array(__('Network Setup'), 'manage_options', 'network.php'); |
207 |
234 |
208 $menu[80] = array( __('Settings'), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'none' ); |
235 $menu[80] = array( __('Settings'), 'manage_options', 'options-general.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'dashicons-admin-settings' ); |
209 $submenu['options-general.php'][10] = array(_x('General', 'settings screen'), 'manage_options', 'options-general.php'); |
236 $submenu['options-general.php'][10] = array(_x('General', 'settings screen'), 'manage_options', 'options-general.php'); |
210 $submenu['options-general.php'][15] = array(__('Writing'), 'manage_options', 'options-writing.php'); |
237 $submenu['options-general.php'][15] = array(__('Writing'), 'manage_options', 'options-writing.php'); |
211 $submenu['options-general.php'][20] = array(__('Reading'), 'manage_options', 'options-reading.php'); |
238 $submenu['options-general.php'][20] = array(__('Reading'), 'manage_options', 'options-reading.php'); |
212 $submenu['options-general.php'][25] = array(__('Discussion'), 'manage_options', 'options-discussion.php'); |
239 $submenu['options-general.php'][25] = array(__('Discussion'), 'manage_options', 'options-discussion.php'); |
213 $submenu['options-general.php'][30] = array(__('Media'), 'manage_options', 'options-media.php'); |
240 $submenu['options-general.php'][30] = array(__('Media'), 'manage_options', 'options-media.php'); |