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 (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.

Si te ha gustado, valora este artículo para mejorar la calidad del blog o compártelo en Redes Sociales…
1 Star2 Stars3 Stars4 Stars5 Stars (1 votos, valoración 5,00 sobre 5) Loading...

Web Hosting