Ejecutar javascript en WordPress después de un inicio de sesión (login) de usuario.

Hace unos días, un cliente nos pidió que ejecutáramos javascript personalizado tras el inicio de sesión de un usuario. En este caso era para Google Tag Manager: es decir querían que se registrara el evento de inicio de sesión.

En teoría era sencillo, ya hemos creado eventos con otros hooks de WordPress. Pero con el hook de inicio de sesión (wp_login) no estaba funcionando el evento.

Hoy os explicamos por qué y cómo solucionarlo.

Cómo ejecutar javascript en WordPress después del inicio de sesión.

La razón por la que no nos funcionaba es que no se puede ejecutar javascript personalizado en ese hook. Pero no viene en la documentación del mismo. sólo en foros de Internet.

La solución pasa por :

Os dejamos un posible código aquí:

//Login
add_action('wp_login', 'after_login_callback');
function after_login_callback ( $user_login) {
    set_transient( $user_login, '1', 0 );
}

 function check_if_firstlogin () {

 global $current_user;
    get_currentuserinfo();

    if ( ! is_user_logged_in() )
        return;

    if ( ! get_transient( $current_user->user_login ) )
        return;
   
 ?>
        <script>
           //Aquí el script que quieras.
    </script>
<?php
     delete_transient( $current_user->user_login );
    }
add_action( 'wp_head', 'check_if_firstlogin');

Esperamos que os funcione.