Blog
Cómo recuperar el acceso de administrador en WordPress
Perder el acceso al panel de WordPress pasa más de lo que parece: un plugin de seguridad que te bloquea, una contraseña que dejó de funcionar, un correo de recuperación que nunca llega, o un sitio comprometido donde alguien te ha quitado el rol de administrador. Mientras conserves acceso al hosting (FTP, panel o base de datos), siempre hay una vía de vuelta.
Aquí tienes los métodos ordenados del más limpio al último recurso. La regla que los separa de una puerta trasera es simple: una recuperación se ejecuta una vez y se elimina; nunca se queda escuchando en el sitio. Cualquier código que se enganche a cada carga de página y espere un parámetro en la URL no es recuperación, es una vulnerabilidad.
Antes de empezar
- ¿Te llega el correo de recuperación? Si no, casi siempre es un problema de envío del servidor (SMTP), no de tu cuenta.
- ¿Qué acceso tienes al hosting? Con SSH, FTP/SFTP, el gestor de archivos del panel o phpMyAdmin, cualquiera vale para entrar.
- Haz una copia de la base de datos antes de tocar nada por SQL.
- Comprueba el prefijo de tus tablas. En los ejemplos uso
wp_, pero tu instalación puede tener otro.
Método 1: Restablecer la contraseña por correo
Lo más rápido si el correo funciona. En la pantalla de acceso pulsa «¿Olvidaste tu contraseña?», introduce tu usuario o email y sigue el enlace que recibes.
Si el correo no llega, no insistas: el fallo está en el envío del servidor, no en tu cuenta. Pasa al método 2 o 3 y, una vez dentro, configura un SMTP para que los correos de WordPress salgan bien.
Método 2: WP-CLI
La forma más limpia si tienes acceso SSH. No deja nada en el código. Primero localiza qué administradores existen:
wp user list --role=administrator
Cambia la contraseña de tu usuario:
wp user update admin --user_pass='ClaveFuerteAqui'
O crea un administrador nuevo:
wp user create soporte [email protected] --role=administrator --user_pass='ClaveFuerteAqui'
Si tu usuario existe pero perdió el rol, devuélveselo indicando su ID:
wp user set-role 12 administrator
Método 3: Base de datos (phpMyAdmin o SQL)
Cuando no hay WP-CLI pero sí acceso a la base de datos. Para restablecer la contraseña:
UPDATE wp_users SET user_pass = MD5('ClaveFuerteAqui') WHERE user_login = 'admin';
Usar MD5 aquí es seguro como medida puntual: WordPress vuelve a cifrar la contraseña con su algoritmo actual en el siguiente inicio de sesión.
Si el problema es que ya no controlas el email de la cuenta (típico tras un hackeo), cámbialo y luego usa el restablecimiento por correo del método 1:
UPDATE wp_users SET user_email = '[email protected]' WHERE user_login = 'admin';
Crear un administrador entero por SQL es más engorroso porque hay que escribir en wp_users y en wp_usermeta (las capacidades y el nivel de usuario). Para eso es más cómodo el método 4.
Método 4: functions.php de un solo uso
El último recurso cuando solo tienes FTP. Añade esto al functions.php de tu tema activo:
add_action('init', function () {
$login = 'soporte13node';
$email = '[email protected]';
if (!username_exists($login) && !email_exists($email)) {
$user_id = wp_create_user($login, wp_generate_password(24), $email);
(new WP_User($user_id))->set_role('administrator');
}
});
Carga el sitio una vez para que se cree el usuario. La contraseña es aleatoria a propósito: entra con «¿Olvidaste tu contraseña?» usando ese email para ponerte la tuya. Y lo más importante: borra este código en cuanto estés dentro. No tiene hook a wp_head, ni parámetro en la URL, ni credenciales fijas, y por eso es recuperación y no backdoor. Si lo dejas puesto, deja de serlo.
Método 5: Script de emergencia oficial
WordPress tiene un script de emergencia que restablece la contraseña del primer administrador y te la envía por correo. Se sube un único archivo emergency.php a la raíz del sitio, se ejecuta una vez desde el navegador y se elimina acto seguido. Tienes el código en la documentación oficial de WordPress; aplica la misma norma de siempre: ejecutar y borrar.
Si tu WordPress ha sido hackeado
Recuperar el acceso es solo el primer paso. Si sospechas de una intrusión, cierra la puerta de verdad:
- Cambia todas las contraseñas: administradores, base de datos, FTP y panel de hosting.
- Revisa los administradores fantasma con
wp user list --role=administratory borra los que no reconozcas. Aquí es donde aparece una puerta trasera real si alguien te la dejó. - Busca código inyectado en
functions.php,wp-config.phpy los archivos modificados más recientemente. - Escanea el servidor en busca de malware antes de darlo por limpio. Te explico cómo en cómo escanear tu servidor Debian en busca de malware.
- Reinstala el core de WordPress con archivos limpios desde el panel o por WP-CLI.
Cómo evitar quedarte fuera otra vez
- Mantén más de un administrador de confianza.
- Usa un gestor de contraseñas en lugar de memorizarlas.
- Configura un SMTP para que los correos de recuperación lleguen siempre.
- Ajusta bien tu plugin de seguridad para que no te bloquee a ti.
El resto de medidas las tienes en cómo mejorar la seguridad de WordPress.
Preguntas frecuentes
¿Puedo recuperar el acceso sin correo electrónico?
Sí. Con WP-CLI o accediendo a la base de datos no necesitas el correo para nada.
¿Es seguro cambiar la contraseña con MD5 en la base de datos?
Sí, como medida puntual. WordPress vuelve a cifrarla con su algoritmo actual en el siguiente inicio de sesión.
¿Por qué no me llegan los correos de recuperación?
Casi siempre es un problema de envío del servidor. Configurar un SMTP lo resuelve.
¿Tengo que borrar el código de recuperación después de usarlo?
Siempre. Cualquier acceso que se quede instalado deja de ser una recuperación y se convierte en una vulnerabilidad.
Si tu sitio está comprometido y prefieres que lo gestione alguien, escríbenos y lo recuperamos por ti.