web-dev-qa-db-de.com

Javascript Code nach wp_login Hook ausführen?

Ist es möglich, nach Verwendung des Hooks wp_login einen Ausschnitt aus dem Javascript-Code zu der Seite hinzuzufügen, die unmittelbar nach dem Login in WordPress angezeigt wird?

Ich möchte mit diesem Top ein Benachrichtigungssystem implementieren, das den Benutzer benachrichtigt, wenn er sich anmeldet.

3
shammer

Ich würde so etwas machen:

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' );

Legen Sie für den Benutzer nach der Anmeldung einen niemals ablaufenden Übergang fest. Wenn für diesen Benutzer ein Transient festgelegt ist, fügen Sie JavaScript-Code ein und löschen Sie den Transient.

2
Daniel

Die typische Methode zum Speichern ausstehender Aktionen in WordPress ist das Festlegen von kurzlebigen Transienten ( set_transient() ). Da dies eine Unterscheidung zwischen Benutzern erfordern würde, können Sie Benutzerinformationen als Teil eines vorübergehenden Schlüssels einbinden oder stattdessen eine andere Speicher-API verwenden, z. B. die Benutzeroption ( update_user_option() ).

0
Rarst