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 :
- añadir una etiqueta al usuario (transient) por php con ese hook (eso si se puede) . https://developer.wordpress.org/reference/functions/set_transient/
- luego un javascript en todas las páginas que compruebe si el usuario está registrado
- si es así, mire si la etiqueta está activa.
- Si es así, es que acaba de iniciar sesión y podemos ejecutar nuestro javascript personalizado
- Después desactivamos la etiqueta con delete_transient (https://developer.wordpress.org/reference/functions/delete_transient/)
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.
Os recomendamos los siguientes productos relacionados con la informática: