• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación & Desarrollo
    • Soporte técnico
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / Publicaciones / Impedir el acceso al Dashboard (wp-admin) a usuarios no administradores

Impedir el acceso al Dashboard (wp-admin) a usuarios no administradores

El 16 de enero de 2018 por dani.sanchez

Si deseamos tener una zona personalizada para usuarios colaboradores de nuestro sitio web, seguramente no queramos que tengan acceso al panel de control o Dashboard de WordPress aunque este esté limitado por el rol establecido (suscriptor, colaborador, autor…).

Queremos tener un sitio web homogéneo y que nuestros usuarios no abandonen el Frontend para añadir sus contenidos.

Ya vimos en el anterior post, cómo ocultar la barra de admin a usuarios no administradores, pero todavía seguirían teniendo acceso si teclean directamente la URL del Dashboard (http://www.tudominio/wp-admin).

Añadiendo este código al archivo functions.php de nuestro theme principal, impediremos que, aún tecleando la URL, se pueda acceder al Dashboard de WordPress si no eres usuario Administrador:

//Restringir panel admin solo a administradores
function restrict_admin_area_by_rol(){
  if (!current_user_can('manage_options') && (!defined('DOING_AJAX') || ! DOING_AJAX )){
    wp_redirect(site_url());
    exit;
  }
}
add_action('admin_init', 'restrict_admin_area_by_rol', 1);

Como vemos en el código, definimos que si el usuario en curso (current user) no posee opciones administrativas (! es igual a NOT, o negación), será redirigido a la página principal del sitio web.

Debemos tener en cuenta que esta función impide que el usuario conecte con cualquier archivo dentro del directorio wp-admin, pero a veces es necesario acceder a estos archivos desde el front-end, por ejemplo, para peticiones AJAX, ya que el archivo que carga las funciones AJAX en WordPress (admin-ajax.php) se encuentra precisamente dentro de /wp-admin. Para ello añadimos la siguiente condición && (!defined(‘DOING_AJAX’) || ! DOING_AJAX )), para excluirla de la redirección.

En el siguiente Post veremos cómo permitir el acceso a una página según el rol del usuario.

Publicado en: Publicaciones, Tutoriales, WordPress Etiquetado como: colaboradores, desarrollo web, php, programación web, publicaciones, tutoriales, woocommerce, wp-admin

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»
  • Portátiles reacondicionados, ¿mejor que uno nuevo?

Interacciones con los lectores

Comentarios

  1. Mariana dice

    4 de enero de 2021 a las 07:17

    Me estropeó todo el estilo del tema y no funcionó…

    • dani dice

      4 de enero de 2021 a las 20:01

      Hola, este código no tiene por qué romper nada del estilo de tu página, en todo caso, insertándolo de forma incorrecta, con algún error de síntaxis, provocaría un error crítico.

      De hecho el código está probado en la última versión de WordPress, copiado tal cual de la página al archivo functions.php del tema activo y funciona.

      Revisa si lo has insertado correctamente, que no lo hayas insertado en medio de otra función o similar. Y sobre todo, lee el aviso que pongo en todos mis posts:

      ///Este artículo puede contener código que podría no funcionar correctamente en tu versión de WordPress o causar incompatibilidad con tu plantilla o plugins. Úsalo bajo tu responsabilidad y haz siempre copia de tus archivos antes de modificarlos.///

  2. Hugo Arturo dice

    6 de marzo de 2021 a las 01:09

    Buen dia amigo me encanto tu solucion pero me gustaria me ayudaras con algo mas…. si tengo dos administradores y solo quiero que uno tenga acceso al wp-admin es posible?

    • dani dice

      6 de marzo de 2021 a las 13:45

      ¿Y para qué quieres un administrador que no pueda acceder al admin? Para eso asígnale un rol con menos privilegios.

  3. nayroby dice

    23 de marzo de 2021 a las 16:41

    Hola me sirvió mucho el código pero yo tenia una pregunta yo necesito darle permiso al administrador y al líder de grupo para que accedan al escritorio, que pasa que el administrador tienen todos los permisos y el líder de grupo solo puede crear cursos son los unicos que deberian poder entrar en el escritorio, como podría yo incluirlo en esta función ?

  4. alex dice

    4 de abril de 2021 a las 00:28

    Muy bueno, gracias

  5. fernando dice

    11 de septiembre de 2021 a las 16:36

    Hola hermano! Me funciono perfecto!! Te agradezco por compartir tu saber!! Un Saludo y Abrazo desde Argentina

  6. vero dice

    4 de febrero de 2022 a las 21:24

    Hola, despues que un programador trabajo en mi pagina, me registro, accedo al dashboard, pero una vez que visualizo la web no veo mas la barra de admin en el front end. Podrias ayudarme?

  7. Marcos dice

    5 de agosto de 2022 a las 04:25

    Hola! Como estas? Muchas gracias por el post, sinceramente era justo lo que estaba buscando. Aunque me gustaría hacerte una consulta.

    ¿Cómo hago para que un EDITOR si pueda acceder al Dashboard?. Personalmente no me gustaría darle el acceso como administrador, con el de editor ya puede cumplir todas sus funciones perfectamente.

    ¿Qué debería agregar en el código que has pasado?

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Iniciar sesión en nuestros VPS mediante SSH Keys
  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»

Comentarios recientes

  1. Brandon Portes en Taller de verano de WooCommerce #1
  2. Sebastian en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  3. Rigol en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora
  4. dani.sanchez en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  5. rikylinux en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress
Medium banner says Support Inkscape
Banner pie de página

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Alojado con energía 100% verde

Dani Sánchez © 2025 · Política de privacidad · Política de cookies