Verwenden von wp_login vs login_redirect zum Umleiten basierend auf Benutzer-Meta

Ich habe eine function geschrieben, um erstmalige Benutzer mit login_redirect , und es funktionierte großartig. Dann habe ich den Hook auf wp_login umgestellt (damit es gut mit einem Social Login Plugin funktioniert), und nun leitet die function alle Benutzer um, die sich über das wp_login_form .

PS: Die Weiterleitung funktioniert einwandfrei, wenn ich mich über mein Social Login Plugin einlogge.

Gibt es einen Unterschied zwischen wp_login und login_redirect oder stimmt etwas mit dem bedingten PHP nicht?

Hier ist der Code:

 //Hook was working fine when it was login_redirect add_action( 'wp_login', __NAMESPACE__ .'\\gsc_login_redirect', 10, 3 ); function gsc_login_redirect() { $user = wp_get_current_user(); //Check if a redirect parameter was passed with the url. $redirect_to = isset($_GET['redirect_to'])? $_GET['redirect_to']: ''; //Set fallback redirect if ( isset( $user->roles ) && is_array( $user->roles ) ) { if(!isset($redirect_to) || $redirect_to == ''){ if (in_array( 'administrator', $user->roles ) ) { $redirect_to = admin_url(); } else $redirect_to = home_url(); } } wp_redirect( first_time_login( $redirect_to, $user) ); exit(); } //Redirect user if it's their first time logging in. function first_time_login( $redirect_to, $user){ if( $user->user_profile_setup == 'true'){ //meta is set to true after user submits form on /account-setup return $redirect_to; } else{ return "/account-setup?redirect_to='". $redirect_to . "'"; } } 

Was passiert, ist, dass alle Benutzer zu ‘/ account-setup’ umgeleitet werden, auch wenn $user->user_profile_setup “true” ist.

Gedanken?

Solutions Collecting From Web of "Verwenden von wp_login vs login_redirect zum Umleiten basierend auf Benutzer-Meta"

Sind Sie sicher, dass $user->user_profile_setup der richtige Weg ist, um auf die Metainformationen zu verweisen?

 # does 'user_profile_setup' show up under wp_get_current_user()? print_r(wp_get_current_user()); 

Ich denke du meinst zu tun:

 function first_time_login( $redirect_to, $user){ if( get_user_meta($user->ID, 'user_profile_setup', true) == 'true' ){ //edited line return $redirect_to; } else{ return "/account-setup?redirect_to='". $redirect_to . "'"; } } 

Vorausgesetzt, dass

 $current_user = wp_get_current_user(); print_r(get_user_meta($current_user->ID)); 

Ausgänge

 Array ( ... [user_profile_setup] => Array ( [0] => true ) ... )