Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
WordPress Roles

Cómo restringir el acceso al back-end de WordPress a usuarios no administradores

A continuación vamos a ver cómo bloquear o restringir el acceso al back-end o escritorio de WordPress (con y sin plugins), incluso ocultaremos el admin bar para evitar tentaciones de acceder al panel de control.

En muchas ocasiones nos puede interesar tener suscriptores en nuestro sitio, pero que no queramos dejarles acceder a su perfil en el panel de administración, sólo que puedan logearse, hacer comentarios, comprar productos, etc… y cerrar sesión. O simplemente que queramos dar acceso al back-end sólo a los usuarios con rol de administrador.

Existen varias maneras de restringir o bloquear el acceso a un tipo determinado de usuarios. La primera y más sencilla es hacer uso de un plugin. Existen varios, entre ellos podemos encontrar WP Secure que entre otras cosas te permite configurar el acceso al panel de administración, bloqueando por tipo de usuario o IP.

Restringir el acceso al back-end por IP

Si queremos bloquear el acceso al administrador de WordPress por IP, para que por ejemplo sólo podamos acceder desde nuestra casa u oficina, tendremos que añadir estas líneas en el fichero .htaccess de la raíz del sitio.

Podemos permitir el acceso a varias IPs, escribiendo tantos “Allow from” como queramos. A continuación, nos vamos a la carpeta wp-admin y creamos otro fichero .htaccess si no existe y escribimos éstas líneas dentro:

 

Restringir el acceso al back-end por rol de usuario

Como sabemos en WordPress existen hasta 6 tipos de roles diferentes: SuperAdministrador (para instalaciones de multisite), Administrador, Editor, Autor, Colaborador y Suscriptor. En algunos casos podemos tener la necesidad de bloquear el acceso a uno o varios tipos de roles.

wordpress user roles

Para ello vamos a usar la función current_user_can (si el usuario actual puede…) en el admin_init, para comprobar si el usuario que está intentando acceder cumple con nuestros requisitos o no, comprobando su rol. Ésta función acepta como parámetros la capacidad (capabilities) o el rol, por lo que podremos hacer cualquier ajuste según nuestras necesidades.

Si queremos dejar acceder sólo a Administradores preguntaremos si el usuario actual tiene rol de administrador: current_user_can(‘administrator’). Si quisiéramos dejar acceder solamente a Administradores y Editores tenemos dos opciones, podemos preguntar por (current_user_can(‘administrator’) || current_user_can(‘editor’)) o buscar una capability que sólo posean esos dos roles, por ejemplo edit_pages y preguntar por ella: current_user_can(‘edit_pages’).

Crearemos una función en nuestro archivo functions.php donde comprobaremos el rol del usuario que intenta acceder al panel de administración (en el admin-init) y si no cumple nuestros requisitos, le redirigimos a la home. Y a continuación crearemos otra función para ocultar la barra de administración que aparece en la parte superior (admin bar).

Hay que tener en cuenta que desde el front se pueden hacer solicitudes AJAX, y éstas necesitan acceso al área de administración (wp-admin/admin-ajax.php) y no deben ser bloqueadas.

Con esto conseguiremos bloquear el acceso al panel de administración a usuarios que no sean administradores. Si tratas de entrar con un rol inferior, el proceso de login se ejecuta correctamente pero serás redirigido siempre al front. Con esto quiero decir que tienes la sesión iniciada aunque no lo veas. Es por esto que en la siguiente entrada vamos a ver cómo crear un formulario de log-in/log-out en el front para permitir al resto de usuarios iniciar y cerrar sesión.

Puede que también te interese

Principios SOLID de la programación orientada a objetos
Principios SOLID de la programación orientada a objetos
SOLID es un acrónimo acuñado por Robert C.Martin para definir los cinco principios básicos de la programación orientada a objetos: Single responsibility, Open-closed, Liskov substitution,…
Cómo crear una puerta trasera para entrar en WordPress
Cómo crear una puerta trasera para entrar en WordPress
En esta entrada vamos a ver cómo crear una puerta trasera o backdoor en WordPress. Reitero, vamos a ver el cómo, el porqué hacerlo es…
WordPress Hooks: Filters
WordPress Hooks: Filters
En la entrada anterior vimos lo que eran los Actions en WordPress. En esta vamos a ver el otro tipo de hook: los filters. Los…
La famosa instalación de WordPress en 30 minutos
La famosa instalación de WordPress en 30 minutos
Con este título tuve el honor de participar como ponente en la pasada WordCamp Sevilla 2016, celebrada en la Escuela de Organización Industrial (EOI). Antes…