Laden Sie die function mit login_redirect

Ich versuche nach erfolgreicher Anmeldung am Frontend eine Nachricht zu laden.

Ich habe das Skript, das als function funktioniert,

function myscript() { ?>  $( document ).ready(function() { $('').appendTo('.pop-notice').delay(6000).queue(function() { $(this).remove(); }); });  <?php } 

Das versuche ich dann auf login_redirect in die Fußzeile zu laden.

 function my_login_redirect() { add_action( 'wp_footer', 'myscript' ); } add_filter( 'login_redirect', 'my_login_redirect', 10, 3 ); 

Aber es funktioniert einfach nicht. Ich bin mir nicht sicher, welchen Haken ich eigentlich benutzen sollte.

Website ist http://dev.podcamptoronto.com/ Mit einem Social-Media-Konto Login-System, “WordPress Social Login”. Aber es nutzt die native Login-function selbst, also glaube ich nicht, dass es sich störend auswirkt.

Solutions Collecting From Web of "Laden Sie die function mit login_redirect"

Es könnte viele Ansätze dazu geben. Meins ist unten angegeben ..

  1. Zuerst speichern Sie die Uhrzeit, zu der der Benutzer angemeldet war, damit Sie das erfolgreiche Login-Popup für X Minuten anzeigen können.

     function store_login_time($user_login, $user) { $userID = $user->ID; update_user_meta( $userID, '_login_time_', time() ); } add_action('wp_login', 'store_login_time', 10, 2); 
  2. Dann verwenden Sie diesen Code, um den Code auf der Startseite der Website für X Minuten (1 Minute in meinem Beispiel) mit wp_head Aktion wp_head .

     function myscript() { $to_time = time(); $from_time = get_user_meta( get_current_user_id(), '_login_time_', true ); $diff = round(abs($to_time - $from_time) / 60,2); // This will run till 1 minute after logging in .. // For Seconds use 0.1 to 0.9 if ( is_front_page() && $diff < "1" ){ ?>  < ?php } } add_action('wp_head', 'myscript'); 

Sie können weitere Optionen für Benutzerrollen gemäß Ihren Anforderungen hinzufügen.

login_redirect ist ein Filter, technisch gesehen ist das ein Missbrauch des login_redirect aber noch wichtiger ist, dass login_redirect vor einer Weiterleitung ausgeführt wird, die zu einer neuen Seitenladung führt. HTTP und PHP in diesem Kontext ist zustandslos, was bedeutet, dass Code nicht durch eine Seitenladung gefüllt wird.

Was Sie tun müssen, ist ein Argument über die URL zu übergeben …

 function my_login_redirect($redirect) { return esc_url(add_query_arg('lgn',true,$request)); } add_filter('login_redirect','my_login_redirect',10); 

Dann verwenden Sie diese Variable, um Ihre Nachricht entweder direkt über PHP oder mit Ihrem JavaSAcript auszulösen.