web-dev-qa-db-fra.com

Exécuter le code javascript après le hook wp_login?

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.

3
shammer

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.

2
Daniel

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() ).

0
Rarst