Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
editor menu

Permite administrar los menús a un usuario con rol Editor

Como sabrás, en WordPress existe una gestión de usuarios con diferentes niveles de permisos o capabilities.

Por defecto la gestión de menús desde el panel de administración de WordPress está restringida a usuarios con rol administrador. En algunos casos, te habrás encontrado con la necesidad o la petición de un cliente para que los usuarios con rol Editor puedan tener acceso a la gestión de menús.

Vamos a ver cómo dar permiso a los usuarios con rol Editor para gestionar los menús, con apenas unas líneas de código. Lo primero es asignarle la capability necesaria, que para este caso es edit_theme_options. Esta capability o permiso, da acceso a los usuarios que la tengan a:

 

Para asignar una capability a un rol determinado, utilizaremos el método add_cap() perteneciente al objeto WP_Role que nos devuelve la función get_role():

$role_object = get_role( 'editor' ); $role_object->add_cap( 'edit_theme_options' );

Simplemente obtenemos el rol editor, y le añadimos la capability edit_theme_options.

¡IMPORTANTE!

El método add_cap almacena en base de datos las capabilities que asignamos a los roles. Por lo tanto, es aconsejable utilizar esto una sóla vez. Una vez ejecutado este código puedes eliminarlo, o mejor, puedes utilizarlo para ejecutar en el hook de activacion de temas y plugins. Si el día de mañana quieres dar marcha atrás, utiliza el método remove_cap.

 

Elimina el resto de opciones del menú apariencia

Hasta aquí todo bien. Pero ahora un usuario con rol editor tiene acceso a todo el menú de apariencia. Veamos cómo darle acceso únicamente a la gestión de menús, capando el resto de opciones:

function hide_menus_for_editor_role() { $role = wp_get_current_user(); $main_roles = array('administrator'); if (!in_array($role->roles[0], $main_roles)) { // Hide theme selection page remove_submenu_page( 'themes.php', 'themes.php' ); // Hide widgets page remove_submenu_page( 'themes.php', 'widgets.php' ); // Hide customize page global $submenu; unset( $submenu['themes.php'][6] ); } } add_action( 'admin_menu', 'hide_menus_for_editor_role' );

Como ves, actuamos sobre el hook admin_menu. Comprobamos que el rol actual no sea administrador, y lo que hacemos es eliminar las subpáginas del menú de Apariencia. De este modo, un usuario con rol editor sólo tendrá acceso a la edición de menús.

Puede que también te interese

Cómo eliminar campos personalizados o custom fields que ya no utilizas
Cómo eliminar campos personalizados o custom fields que ya no utilizas
Es algo muy habitual el uso de campos personalizados o custom fields para hacer desarrollos a medida sobre WordPress. También es muy habitual con el…
Creando un tema desde cero para WordPress parte 1: Consideraciones previas
Creando un tema desde cero para WordPress parte 1: Consideraciones previas
1. Creando un tema desde cero para WordPress: Consideraciones previas 2. Creando un tema desde cero para WordPress: Escribiendo el tema 3. Creando un tema…
Establecer la primera imagen de un post como destacada
Establecer la primera imagen de un post como destacada
Cuando escribimos una entrada o página en WordPress, por defecto nos deja establecer una imagen destacada o thumbnail: Esta imagen destacada suele usarse por ejemplo…
He olvidado, perdido o borrado mi usuario o contraseña, o ambos
He olvidado, perdido o borrado mi usuario o contraseña, o ambos
A quien no le ha ocurrido alguna vez que nos hemos olvidado o perdido nuestro usuario o contraseña, o ambos para acceder a un sitio…