Wie erstelle ich einen Shortcode für die automatische Anmeldung nach der Registrierung?

Ich habe einen Code für die automatische Anmeldung nach der Registrierung:

function auto_login_new_user( $user_id ) { wp_set_current_user($user_id); wp_set_auth_cookie($user_id); $request = $_SERVER["HTTP_REFERER"]; wp_redirect($request); exit; } add_action( 'user_register', 'auto_login_new_user' ); 

Was ich brauche, ist einen Shortcode zu erstellen, um die Zeit der Umleitung zu steuern, ich möchte nicht, dass es nach $userID = wp_insert_user( $userDataArr ); umleitet $userID = wp_insert_user( $userDataArr );

Ich möchte, dass die Umleitung nach dem Hinzufügen von Code für zusätzliche Felder wie so update_user_meta( $userID, $fieldsArr[$fieldN], $value);

Ich dachte, dass ich das tun kann, indem ich den ADD_ACTION-Code innerhalb der Shortcode-function ansetze

 function my_login_shortcode(){ add_action( 'user_register', 'auto_login_new_user' ); } add_shortcode('mogincode','my_login_shortcode'); 

wie kann ich das machen ?

Solutions Collecting From Web of "Wie erstelle ich einen Shortcode für die automatische Anmeldung nach der Registrierung?"

Weil ich versucht habe, die Umleitung unter Verwendung des Kurzwahlcodes in der Registrierung zu machen, und ich habe die Antwort nicht erhalten, die die Weiterleitung verzögern kann, bis ich benutzerdefinierte Textfelderfelder auf der Benutzerprofilseite hinzufüge

  • Vor diesem Schritt $userID = wp_insert_user( $userDataArr ) ich noch keine Benutzer-ID, daher kann ich keine Aktualisierung für unbekannte Benutzer-ID durchführen
  • danach passiert die Weiterleitung bevor ich update_user_meta( $userID, $fieldsArr[$fieldN], $value); erreiche update_user_meta( $userID, $fieldsArr[$fieldN], $value); Code, also verliere ich das Datum, das von $ _POST [$ fieldN] kommt, sogar ich habe Benutzer-ID

Was ich getan habe, war Setcookie für die Daten aus $ _POST [$ fieldN] vor der Weiterleitung, so:

 setcookie($fieldN, $value, time()+3600*24,'/','.MYSITE.com'); $userID = wp_insert_user( $userDataArr ); 

und ich überprüfe, ob ein Cookie oben auf der Seite existiert, und handle damit (Caching und wenn ich fertig bin, lösche ich diesen Cookie, indem ich seine Zeit auf minus Zeit setze - , php normal)

 if ( is_user_logged_in() ) { $userID = $current_user->ID; if(isset($_COOKIE[$fieldN])){ update_user_meta( $userID, $fieldN, $_COOKIE[$fieldN]); setcookie($fieldN, '', time()-3600*24,'/',$homecookieURL); } } 

Jetzt können sich die Besucher registrieren und gleichzeitig ein zusätzliches Datum für benutzerdefinierte Profiltextfelder hinzufügen.

Ich behebe mein Problem, also habe ich beschlossen, dies zu teilen, vielleicht hat jemand eine bessere Lösung oder kann ich jemandem helfen, der ähnliches braucht 🙂