Quitando menús del escritorio de WordPress

via Planeta WordPress by planetawordpress on 1/10/10


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:

PHP:

  1. //quitar menus de admin
  2. function quitar_menus () {
  3. global $menu;
  4.         $restricted = array( __(‘Posts’), __(‘Media’), __(‘Links’), __(‘Pages’), __(‘Appearance’), __(‘Tools’), __(‘Users’), __(‘Settings’), __(‘Comments’), __(‘Plugins’));
  5.         end ($menu);
  6.         while (prev($menu)){
  7.             $value = explode(‘ ‘,$menu[key($menu)][0]);
  8.             if(in_array($value[0] != NULL?$value[0]:“” , $restricted)){unset($menu[key($menu)]);}
  9.         }
  10. }
  11. 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í:

PHP:

  1. function quitar_menus () {
  2. global $menu, $submenu, $user_ID;
  3.     $the_user = new WP_User($user_ID);
  4.     $valid_page = “admin.php?page=contact-form-7/admin/admin.php”;
  5.     $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’);
  6.     $restricted_str = ‘widgets.php’;
  7.     end ($menu);
  8.     while (prev($menu)){
  9.         $menu_item = $menu[key($menu)];
  10.         $restricted_str .= ‘|’.$menu_item[2];
  11.         if(in_array($menu_item[2] , $restricted)){
  12.             $submenu_item = $submenu[$menu_item[2]];
  13.             if($submenu_item != NULL){
  14.                 $tmp = $submenu_item;
  15.                 $max = array_pop(array_keys($tmp));
  16.                 for($i = $max; $i> 0;$i-=5){
  17.                      if($submenu_item[$i] != NULL){
  18.                         $restricted_str .= ‘|’.$submenu[$menu_item[2]][$i][2];
  19.                         /unset”>unset($submenu[$menu_item[2]][$i]);
  20.                     }
  21.                 }
  22.             }
  23.             unset($menu[key($menu)]);
  24.         }
  25.     }
  26.     $result = preg_match(‘/(.*?)/wp-admin/?(‘.$restricted_str.‘)??((‘.$restricted_str.‘){1})(.*?)/’,$_SERVER[‘REQUEST_URI’]);
  27.     if ($result != 0 && $result != FALSE){
  28.         wp_redirect(get_option(‘siteurl’) . ‘/wp-admin/’ . $valid_page);
  29.         exit(0);
  30.     }
  31. }
  32. 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.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: