En algún proyecto he tenido que preparar algún mecanismo para hacer un inicio de sesión o login sin usuario y contraseña, es decir de foma programática. ¿Por qué puede pasarte esto? Os planteo una serie de posibilidades que se me vienen ahora a la cabeza pero podrían ser todas las que necesitéis:
- Una aplicación móvil en la que el usuario está autenticado y entonces accede a un visor web donde se muestra un sitio que es WordPress, sería un poco raro que tuviera que volver a loguearse al entrar al web view
- Un listado de usuarios de una Intranet hecha a medida donde el responsable quiere ver algo como lo verían sus empleados y no conocer la contraseña de estos
Y bueno, hay plugins que resuelven este problema de forma parcial para casos concretos, por ejemplo estos dos:
- User Switching para hacerte pasar por otro usuario a golpe de clic
- Temporary Login Without Password para hacer login con un enlace para accesos puntuales por ejemplo a colaboradores
Pero claro, ambos plugins internamente hacen esto que os voy a mostrar pero quizás estéis como en un caso en el que necesitáis gestionarlo a vuestra manera y no como estos plugins proponen.
Son solo tres líneas de código y debéis ejecutarlas antes de que haya un echo de PHP para evitar problemas porque las cookies de autenticación se envían en el header del paquete HTTP.
wp_set_current_user( $user_id, $user->user_login ); wp_set_auth_cookie( $user_id ); do_action( 'wp_login', $user->user_login, $user );
Una breve explicación de lo que hace:
- En este ejemplo $user_id es el identificador de usuario que queremos loguear y $user es el objeto de este usuario
- wp_set_current_user establece que el usuario actual sea el definido por el identificador $user_id y con el nombre de usuario definido por el segundo parámetro que es el nombre de usuario en cuestión
- wp_set_auth_cookie estable la cookie de autenticación para el usuario identificado por su ID
- El do_action final es por si hay algún plugin o tu tema que se une a ese hook para hacer cualquier acción cuando un usuario se loguea
Si os fijáis son pocas líneas de código pero son a la vez que potentes, peligrosas si se usan mal, así que cuidad dónde los integréis para evitar brechas de seguridad si no hacéis un uso correcta de ellas.

