Après avoir utilisé le hook wp_login
, est-il possible d’ajouter un extrait de code javascript à la page affichée immédiatement après la connexion à wordpress?
Je souhaite utiliser cette application pour implémenter un système de notification qui informe l'utilisateur lorsqu'il se connecte.
Je ferais quelque chose comme ça:
function wpse38285_wp_login( $user_login ) {
set_transient( $user_login, '1', 0 );
}
add_action( 'wp_login', 'wpse38285_wp_login' );
function wpse38285_wp_footer() {
global $current_user;
get_currentuserinfo();
if ( ! is_user_logged_in() )
return;
if ( ! get_transient( $current_user->user_login ) )
return;
$js = <<<JS
<script type="text/javascript">
jQuery('<div />')
.html('<p>You are now logged in as <strong>$current_user->user_login</strong><br /><small>(click to close)</small></p>')
.css({
'width': '300px',
'position': 'absolute',
'left': '50%',
'marginLeft': '-160px',
'top': '100px',
'backgroundColor': '#cdcdcd',
'textAlign': 'center',
'padding': '10px'
})
.appendTo('body')
.on('click', function() { jQuery(this).remove(); } );
</script>
JS;
echo $js;
delete_transient( $current_user->user_login );
}
add_action( 'wp_footer', 'wpse38285_wp_footer' );
Définissez un transitoire qui n'expire jamais pour l'utilisateur après la connexion. Si un transitoire est défini pour cet utilisateur, injectez du code JavaScript et supprimez le transitoire.
La méthode typique pour stocker les actions en attente dans WordPress consiste à définir un transitoire de courte durée ( set_transient()
). Dans la mesure où cela nécessiterait de distinguer les utilisateurs, vous pouvez incorporer les informations utilisateur dans la clé transitoire ou utiliser une API de stockage différente, telle que l'option utilisateur ( update_user_option()
).