SmythSys IT Consulting

Eliminar opciones del menú del backend de WordPress según el rol del usuario.

Hace unos días un cliente nos pidió que sus usuarios de un rol específico sólo pudieran acceder a ciertas cosas. Es decir, o crear un nuevo rol con capacidades específicas, o limitar uno de los roles de WordPress.

Esto normalmente se hace de manera sencilla con plugins que editan las “capabilities” de los roles de WordPress, como este.
PERO tienen un fallo. Esos plugins restringen “capabilities” de Wordress. Hay recursos que comparten la misma. Así que a veces quieres dar acceso a una opción pero limitar otra, y no es posible porque ambas usan la misma.

Una opción que soluciona esto es quitar esas opciones del menú de administrador para esos roles.

Cómo eliminar opciones del menu del backend de WordPress según el rol de ususario.

Para ello vamos a usar un código que, como siempre, podemos o poner en el archivo functions.php de nuestro tema hijo o en un Snippet (sólo para el backend en este caso). Es el siguiente:

add_action( 'admin_init', 'remove_menu_elements' );
function remove_menu_elements() {

global $user_ID;

if ( current_user_can( 'editor' ) ) {
remove_menu_page( 'urlquequierasquitar' );
}
}

Las claves están en
1) La línea de current_user_can( ‘editor’ ). Como véis aquí hemos puesto un rol, pero también podemos poner una capability para afectar a más de un rol. En Internet podéis ver muchos ejemplos.
2) La parte de remove_menu_page( ‘urlquequierasquitar‘ ). Estas son las opciones que tenemos que eliminar. Tienes que poner entre paréntesis la url o parte de la url a la que apunte el menú que quieres quitar. Juega con las opciones hasta conseguir el resultado optimo.

Por ejemplo si pasas el ratón por encima de Apariencia y copias el enlace (botón derecho, copiar dirección del enlace) es algo como tudominio/wp-admin/themes.php Si quieres eliminarlo pon en el código superior la línea:
remove_menu_page( ‘themes.php’ ) .

Os dejamos algún ejemplo:

remove_menu_page('edit.php'); // Entradas
remove_menu_page('upload.php'); // Medios
remove_menu_page('link-manager.php'); // Enlaces
remove_menu_page('edit-comments.php'); // Comentarios
remove_menu_page('edit.php?post_type=page'); // Páginas
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Apariencia
remove_menu_page('users.php'); // Usuarios
remove_menu_page('tools.php'); // Herramientas
remove_menu_page('options-general.php'); // Ajustes

Como veis este código admite eliminar todas las opciones que quieras, y también, con más if, usarlo para diferentes roles.

Espero que os sea útil.

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).