Introducción

Uno de los errores más frustrantes en WordPress es cuando un usuario registrado no puede acceder al admin. En muchos casos, el problema no está en la contraseña o los permisos, sino en que el usuario no tiene ningún rol asignado.

Este problema puede surgir por plugins, migraciones o inserciones manuales en la base de datos. En esta guía aprenderás cómo detectarlo, solucionarlo y evitar que vuelva a ocurrir.

 

 

Índice

1. Cómo identificar el problema

Algunos síntomas comunes:

  • El usuario inicia sesión pero es redirigido al frontend
  • No ve el menú de administración
  • No puede editar entradas, ni perfil, ni acceder al dashboard

Esto ocurre porque no tiene un rol de usuario válido (subscriber, editor, admin…).

2. Tablas involucradas

TablaDescripción
wp_usersDatos básicos de los usuarios
wp_usermetaIncluye el campo wp_capabilities que define su rol

3. Consulta SQL para detectar usuarios sin rol

Esta consulta devuelve los usuarios que no tienen el campo wp_capabilities:

SELECT u.ID, u.user_login, u.user_email
FROM wp_users u
LEFT JOIN wp_usermeta um ON um.user_id = u.ID AND um.meta_key = 'wp_capabilities'
WHERE um.meta_value IS NULL;

Explicación:
– Se revisan todos los usuarios registrados
– Se buscan aquellos que no tienen asignado ningún rol

4. Asignar un rol manualmente

Opción 1: desde SQL (rol ‘subscriber’):

INSERT INTO wp_usermeta (user_id, meta_key, meta_value)
SELECT ID, 'wp_capabilities', 'a:1:{s:10:"subscriber";b:1;}'
FROM wp_users
WHERE ID = 123; -- cambia por el ID real

Opción 2: desde código PHP:

<?php
$user = get_user_by('id', 123);
$user->set_role('subscriber');
?>

💡 Puedes usar ‘editor’, ‘author’, ‘administrator’ según tu necesidad.

5. Prevenir el problema

  • Valida que cada nuevo usuario tiene un rol definido al registrarse
  • Evita importar usuarios por SQL sin crear el meta `wp_capabilities`
  • Usa hooks como user_register para asignar roles por defecto

Ejemplo:

add_action('user_register', function($user_id) {
    $user = get_user_by('id', $user_id);
    if (empty($user->roles)) {
        $user->set_role('subscriber');
    }
});

6. Conclusión

Los usuarios sin rol en WordPress pueden quedar bloqueados sin que lo sepas.
Detectarlo desde SQL y solucionarlo te permite ahorrar tiempo en soporte y evitar errores tras migraciones.

¿Quieres que revisemos tu base de usuarios o automatices el proceso?


📩 Escríbenos y te ayudamos a dejarlo todo en orden.

Ir al contenido