mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-05-30 16:10:04 +00:00
Dynamic menu reparenting. fixes #2257
git-svn-id: https://develop.svn.wordpress.org/trunk@3536 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -49,6 +49,51 @@ $submenu['plugins.php'][10] = array(__('Plugin Editor'), 'edit_plugins', 'plugin
|
||||
$submenu['themes.php'][5] = array(__('Themes'), 'switch_themes', 'themes.php');
|
||||
$submenu['themes.php'][10] = array(__('Theme Editor'), 'edit_themes', 'theme-editor.php');
|
||||
|
||||
// Loop over submenus and remove pages for which the user does not have privs.
|
||||
foreach ($submenu as $parent => $sub) {
|
||||
foreach ($sub as $index => $data) {
|
||||
if ( ! current_user_can($data[1]) ) {
|
||||
$menu_nopriv[$data[2]] = true;
|
||||
unset($submenu[$parent][$index]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( empty($submenu[$parent]) )
|
||||
unset($submenu[$parent]);
|
||||
}
|
||||
|
||||
// Loop over the top-level menu.
|
||||
// Remove menus that have no accessible submenus and require privs that the user does not have.
|
||||
// Menus for which the original parent is not acessible due to lack of privs will have the next
|
||||
// submenu in line be assigned as the new menu parent.
|
||||
foreach ( $menu as $id => $data ) {
|
||||
// If submenu is empty...
|
||||
if ( empty($submenu[$data[2]]) ) {
|
||||
// And user doesn't have privs, remove menu.
|
||||
if ( ! current_user_can($data[1]) ) {
|
||||
$menu_nopriv[$data[2]] = true;
|
||||
unset($menu[$id]);
|
||||
}
|
||||
} else {
|
||||
$subs = $submenu[$data[2]];
|
||||
$first_sub = array_shift($subs);
|
||||
$old_parent = $data[2];
|
||||
$new_parent = $first_sub[2];
|
||||
// If the first submenu is not the same as the assigned parent,
|
||||
// make the first submenu the new parent.
|
||||
if ( $new_parent != $old_parent ) {
|
||||
$real_parent_file[$old_parent] = $new_parent;
|
||||
$menu[$id][2] = $new_parent;
|
||||
|
||||
foreach ($submenu[$old_parent] as $index => $data) {
|
||||
$submenu[$new_parent][$index] = $submenu[$old_parent][$index];
|
||||
unset($submenu[$old_parent][$index]);
|
||||
}
|
||||
unset($submenu[$old_parent]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create list of page plugin hook names.
|
||||
foreach ($menu as $menu_page) {
|
||||
$admin_page_hooks[$menu_page[2]] = sanitize_title($menu_page[0]);
|
||||
|
||||
Reference in New Issue
Block a user