
Perder el acceso a tu WordPress es más frecuente de lo que parece. El correo de recuperación no llega, el servidor de correo está caído, o simplemente el email registrado ya no existe. Antes de entrar en pánico, hay al menos cinco caminos para volver a entrar, cada uno adecuado a una situación distinta. Te los explico de más sencillo a más técnico.
Si tienes acceso al email registrado en tu cuenta, este es el método estándar: ve a tudominio.com/wp-login.php, haz clic en ¿Olvidaste tu contraseña? e introduce tu nombre de usuario o email. WordPress te manda un enlace de restablecimiento. Sencillo y sin riesgos.
El problema aparece cuando el email no llega. En ese caso, revisa primero el spam y confirma que el servidor SMTP de tu hosting está configurado correctamente. Si el hosting bloquea el envío nativo de PHP, instalar un plugin SMTP como WP Mail SMTP soluciona el problema de raíz.
Si tienes acceso al panel de control de tu hosting (cPanel, Plesk u otro), puedes cambiar la contraseña directamente en la base de datos:
wp_users (el prefijo puede variar si lo cambiaste).user_pass, selecciona la función MD5 e introduce la nueva contraseña.También puedes hacerlo con una consulta SQL directa desde la pestaña SQL de phpMyAdmin:
UPDATE wp_users SET user_pass = MD5('NuevaContraseña') WHERE user_login = 'tuUsuario';Lenguaje del código: JavaScript (javascript)
Sustituye NuevaContraseña y tuUsuario por tus datos reales. Después de guardar, inicia sesión normalmente en WordPress y cambia la contraseña desde tu perfil de usuario para que quede cifrada con el algoritmo moderno de WordPress (phpass), no solo MD5.
Si tu hosting ofrece acceso SSH y tienes WP-CLI instalado, cambiar la contraseña es una línea de terminal:
wp user update tuUsuario --user_pass='NuevaContraseña' --path=/ruta/a/tu/wordpressLenguaje del código: JavaScript (javascript)
WP-CLI cifra la contraseña correctamente con el sistema nativo de WordPress, sin pasar por MD5 manual. También puedes listar los usuarios para identificar el ID o login correcto:
wp user list --fields=ID,user_login,user_email,rolesLenguaje del código: PHP (php)
Este método es el más limpio: no toca ficheros PHP, no expone contraseñas en texto plano y deja el sitio en un estado consistente.
Este es el método original de este tutorial: si tienes acceso FTP pero no a la base de datos ni a SSH, puedes añadir temporalmente una función al functions.php de tu tema activo que restablezca la contraseña al cargar cualquier página.
add_action( 'init', function() {
$usuario_id = 1; // Cambia esto al ID real de tu usuario
$nueva_contrasena = 'MiNuevaContraseñaSegura2024!';
wp_set_password( $nueva_contrasena, $usuario_id );
} );Lenguaje del código: PHP (php)
El número 1 es el ID de usuario (el administrador principal suele ser siempre ID 1). Sube el fichero modificado por FTP, abre cualquier URL de tu WordPress en el navegador (eso ejecuta el hook init), luego inicia sesión con la nueva contraseña y, lo más importante, elimina inmediatamente ese código del functions.php y vuelve a subir el fichero limpio.
Dejar esa función activa es un riesgo de seguridad crítico: cualquiera que cargue el sitio resetearía la contraseña sin saberlo. Úsala, entra, elimínala. Sin excepción.
WordPress incluye en su repositorio oficial un script de emergencia (emergency.php) diseñado exactamente para estos casos. Lo subes a la raíz de tu instalación por FTP, accedes a él desde el navegador, introduces el nuevo password y lo borras. El script usa las funciones nativas de WordPress para el cifrado, así que el resultado es equivalente a cambiarlo desde el panel.
Puedes encontrarlo en el Codex oficial de WordPress sobre recuperación de contraseña. Descárgalo solo desde fuentes oficiales.
Si alguien comprometió tu contraseña, recuperar el acceso es solo el primer paso. Conviene tomar medidas adicionales:
wp_ por defecto.Para una visión completa de medidas de protección, revisa nuestra guía sobre seguridad en WordPress y el artículo sobre configuración del .htaccess, donde encontrarás reglas para bloquear bots y accesos no deseados.
| Situación | Método recomendado |
|---|---|
| Tienes acceso al email registrado | Enlace «Olvidé mi contraseña» |
| Tienes acceso a phpMyAdmin | SQL en wp_users |
| Tienes SSH y WP-CLI | wp user update |
| Solo tienes FTP, sin BD ni SSH | wp_set_password() en functions.php |
| Necesitas solución de emergencia | emergency.php de WordPress.org |
Solo si lo haces durante el tiempo mínimo imprescindible. El código que añades al functions.php se ejecuta en cada carga de página, así que la contraseña queda visible en texto plano en el servidor. Úsalo solo como recurso de emergencia, entra al panel y borra el código de inmediato. Nunca lo dejes activo más de unos minutos.
WordPress usa la función wp_mail() que a su vez usa la función mail() de PHP. Muchos hostings tienen esta función limitada o directamente bloqueada para evitar spam. La solución más fiable es configurar un servidor SMTP externo usando un plugin como WP Mail SMTP o FluentSMTP con las credenciales de Gmail, SendGrid u otro proveedor de email transaccional.
El primer usuario creado durante la instalación de WordPress recibe el ID 1. Si tienes dudas, puedes verificarlo en phpMyAdmin mirando la tabla wp_users, o con WP-CLI ejecutando wp user list. En instalaciones de red (multisite), los IDs pueden variar.
Cada visita al sitio ejecutará wp_set_password() y restablecerá la contraseña al valor que pusiste en el código. Esto significa que si cambias la contraseña desde el panel, al siguiente visitante del sitio la resetea de nuevo. Además, la contraseña queda expuesta en texto plano en un fichero accesible por FTP. Bórralo en cuanto entres.
Sí. WP-CLI funciona desde la línea de comandos del servidor, completamente independiente del panel de WordPress. Con wp user update 1 --user_pass='nuevaPass' cambias la contraseña del usuario ID 1 sin necesidad de estar logueado en WordPress. Solo necesitas acceso SSH al servidor donde está alojado el sitio.
Si trabajas habitualmente con la línea de comandos, consulta también nuestra guía sobre el hardening de WordPress para aplicar medidas preventivas que eviten llegar a esta situación.
