Si gestionas sitios de clientes y quieres eliminar acceso a los menús de administración, aunque el usuario sea administrador, puedes hacerlo de un modo muy sencillo y, lo más importante, sin tocar los archivos ‘core‘ de WordPress, con lo que no tendrás que rehacer las modificaciones tras una actualización.
Como ya estarás imaginando, echaremos mano del fichero functions.php de tu tema activo – y si no existe lo creas ahora mismo – y le añadiremos este código:
//quitar menus de admin
function quitar_menus () {
global $menu;
$restricted = array( __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
}
add_action('admin_menu', 'quitar_menus');
¿Que consigues con esto?, pues que solo se vean los menús personalizados – normalmente los que añaden los plugins – y aquellos que elimines de la lista de $restricted. En el ejemplo anterior solo verías el escritorio y aquellos menús de los plugins que tengas activos y a los que, por tu perfil de usuario, tengas acceso, justo lo que ves arriba en la captura.
Si también quieres quitar acceso al escritorio solo tendrías que añadir a la ista __('Dashboard'),.
Ahora bien, un usuario avezado aún podrá acceder a las distintas secciones tecleando la URL, o sea, que aunque quites el menú, si alguien teclea http://tudominio.com/wp-admin/plugins.php tendrá acceso. Si quieres eliminar también esa posibilidad, para los menús que definas, entonces el código se debe complicar un poco más, algo así:
function quitar_menus () {
global $menu, $submenu, $user_ID;
$the_user = new WP_User($user_ID);
$valid_page = "admin.php?page=contact-form-7/admin/admin.php";
$restricted = array('edit.php','categories.php','upload.php','link-manager.php','edit-pages.php','edit-comments.php', 'themes.php', 'plugins.php', 'users.php', 'profile.php', 'tools.php', 'options-general.php');
$restricted_str = 'widgets.php';
end ($menu);
while (prev($menu)){
$menu_item = $menu[key($menu)];
$restricted_str .= '|'.$menu_item[2];
if(in_array($menu_item[2] , $restricted)){
$submenu_item = $submenu[$menu_item[2]];
if($submenu_item != NULL){
$tmp = $submenu_item;
$max = array_pop(array_keys($tmp));
for($i = $max; $i > 0;$i-=5){
if($submenu_item[$i] != NULL){
$restricted_str .= '|'.$submenu[$menu_item[2]][$i][2];
unset($submenu[$menu_item[2]][$i]);
}
}
}
unset($menu[key($menu)]);
}
}
$result = preg_match('/(.*?)/wp-admin/?('.$restricted_str.')??(('.$restricted_str.'){1})(.*?)/',$_SERVER['REQUEST_URI']);
if ($result != 0 && $result != FALSE){
wp_redirect(get_option('siteurl') . '/wp-admin/' . $valid_page);
exit(0);
}
}
add_action('admin_menu', 'quitar_menus');
Con este código eliminas la visualización y el acceso a los menús. Y en la lista de $restricted puedes añadir o quitar a voluntad los menús a los que se tendrá acceso.
Inicio





Pingback: Bitacoras.com
Pingback: Quitar elementos Panel de Wordpress
Pingback: wp-popular.com » Blog Archive » Quitando menús del escritorio de WordPress | Ayuda WordPress