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