WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

After using the wp_login hook, is it possible to add a snippet of javascript code to the page seen immediately after the login in wordpress?

I want to use this top implement a notification system that notifies the user when they login.

share|improve this question
Search for admin_notices hook. If you need it after an redirect, you maybe need to do it with Cookies and a $_SESSION. – kaiser Jan 9 '12 at 1:09

I would do something like this:

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;

    if ( ! is_user_logged_in() )

    if ( ! get_transient( $current_user->user_login ) )

    $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>')
                'width': '300px',
                'position': 'absolute',
                'left': '50%',
                'marginLeft': '-160px',
                'top': '100px',
                'backgroundColor': '#cdcdcd',
                'textAlign': 'center',
                'padding': '10px'
            .on('click', function() { jQuery(this).remove(); } );
    echo $js;
    delete_transient( $current_user->user_login );
add_action( 'wp_footer', 'wpse38285_wp_footer' );

Set a never-expiring transient for the user after logging on. If a transient is set for that user, inject some JavaScript code and delete the transient.

share|improve this answer
Injecting JS straight into the page is not the WordPress Way. Use wp_enqueue_script() instead. – Pat J May 29 '13 at 4:35
You should add a prefix to the transient name to prevent potential clashes – Tom J Nowell Jun 25 '14 at 9:07

The typical method to store pending action in WordPress is to set short-lived transient (set_transient()). Since this would need to distinguish between users you can incorporate user info as part of transient key or use different storage API, such as user option (update_user_option()), instead.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.