Desaparecer menús en WordPress es muy fácil. Pega este código en el archivo functions.php de tu plantilla y mira el resultado:
Código php:
Ver originaladd_action('admin_menu' , 'adios_entradas');
function adios_entradas() {
global $menu;
}
¡Felicitaciones! acabas de volar el
menú Entradas en tu panel de administración. Ahora vamos con la parte teórica:
En el núcleo de WordPress se asigna
posiciones predeterminadas para los menús nativos de la administración. Dichas posiciones son:
Código PHP:
5 - Entradas
10 - Multimedia
15 - Enlaces
20 - Páginas
25 - Comentarios
60 - Primer separador
65 - Plugins
70 - Usuarios
75 - Herramientas
80 - Ajustes
100 - Segundo separador
Creo que se capta. Cuando escribimos
$menu[5] estaremos invocando al menú
Entradas, lo mismo que
$menu[25] correspondería a
Comentarios. Veamos cómo sería el asunto con varios menús. A continuación le daremos palo a los menús de Entradas, Multimedia y Usuarios mediante un array simple y un bucle:
Código php:
Ver originalfunction adios_menus() {
global $menu;
$menus = array(5 , 10 , 70); foreach($menus as $m)
}
¿Aún quieres más? Vamos con algo un poquito más complicado. Ocultaremos estos mismos menús sólo a los usuarios con rol de Autor:
Código php:
Ver originalfunction adios_menus() {
global $menu, $current_user, $wpdb;
get_currentuserinfo();
if($current_user->wp_capabilities['author']) { // Leer Nota 2
$menus = array(5 , 10 , 70); foreach($menus as $m)
}
}
Nota: Este procedimiento sólo oculta los menús. Las funciones siguen manteniéndose accesibles. Si deseas suprimir el acceso totalmente, te recomiendo
crear nuevos roles y configurarlos a conveniencia. Para gestionar bien esta part te recomiendo el plugin
User Role Editor.
Nota 2: Si es el caso, sustituye "wp_capabilities" por [prefijo]_capabilities.
Submenús Eliminarlos
Vamos a eliminar el submenú "Añadir nueva entrada":
Código PHP:
Ver originaladd_action('admin_menu' , 'adios_submenu');
function adios_submenu() {
global $submenu;
unset($submenu['edit.php'][10]); }
La explicación: WordPress establece los incrementos son de 5 en 5, donde [0] es el título del menú padre. Es natural esperar que el sistema reserva de manera estática los primeros puestos para los submenús nativos (lo que no impide que sobrescribas lo que sea). El resto se maneja con un bucle en incrementos de 5.
En este punto, el archivo
/wp-admin/menu.php resulta una excelente referencia porque puedes identificar fácilmente las variables correspondientes. Por ejemplo, los submenús de "Páginas" están expresados así:
Código PHP:
Ver original$submenu['edit.php?post_type=page']['numero de posición'];
Agregarlos:
Asignemos un submenú extra al menú "Entradas":
Código PHP:
Ver originaladd_action('admin_menu' , 'agregar_submenu');
function agregar_submenu() {
global $submenu;
$submenu['edit.php'][6] = array( 'Cualquier cosa' , 'cualquier_cosa' , 'cosa.php' ); }
Listo. El parámetro es simple de configurar:
Código PHP:
Ver originalarray( 'Nombre del submenú' , 'identificador' , 'ruta-al/archivo.php' );
Probando todo esto noté que al agregar submenús, el sistema ignora los parámetros de prioridad de
add_action() y de todas formas lo ubica de último en la lista.
De interés:
- Lista de roles y niveles de acceso:
http://codex.wordpress.org/Roles_and_Capabilities
- Estructura de base de datos para _users y _usermeta:
http://codex.wordpress.org/Database_...e:_wp_usermeta