Hey!
Suche seit 3 Tagen, bisher ohne Erfolg. Vielleicht weiß jemand rat ?
Nutze das Plugin: Login with Ajax. Dieses ist über einen Link und dazugehörigen Popup auf jeder Seite verfügbar. Damit können Subscriber und customer sich auf jeder Seite einloggen. Damit sie dort auch bleiben, habe ich bei den zugehörigen redirects nichts hinterlegt.
Ich benötige eine Modifizierung, sodass eben jene beide Benutzertypen, wenn Sie sich auf der Startseite einloggen, und nur dann, auf ihr Profil geleitet werden.
Der zughörige Code lautet wie folgt:
PHP
public static function loginRedirect( $redirect, $redirect_notsurewhatthisis, $user ){ $data = self::$data; if(is_user_logged_in()){ $lwa_redirect = self::getLoginRedirect($user); if( $lwa_redirect != '' ){ wp_redirect($lwa_redirect); exit(); } } return $redirect; }
public static function getLoginRedirect($user){ $data = self::$data; //Global redirect $redirect = false; if( !empty($data['login_redirect']) ){ $redirect = $data["login_redirect"]; } //WPML global redirect if( !empty($_REQUEST['icl_language_code']) ){ $code = $_REQUEST['icl_language_code']; if( isset($data["login_redirect_".$code]) ){ $redirect = $data["login_redirect_".$code]; } } //Role based redirects if( strtolower(get_class($user)) == "wp_user" ){ $user_role = array_shift($user->roles); //Checking for role-based redirects if( isset($data["role_login"][$user_role]) ){ $redirect = $data["role_login"][$user_role]; } //Check for language redirects based on roles if( !empty($_REQUEST['icl_language_code']) ){ if( isset($data["role_login"][$user_role."_".$code]) ){ $redirect = $data["role_login"][$user_role."_".$code]; } } } //Do string replacements $redirect = str_replace('%USERNAME%', $user->user_login, $redirect); $redirect = str_replace("%LASTURL%", $_SERVER['HTTP_REFERER'], $redirect); if( !empty($_REQUEST['icl_language_code']) ){ $redirect = str_replace("%LANG%", $code.'/', $redirect); } return $redirect; }
Diesen habe ich so modifiziert:
PHP
public static function loginRedirect( $redirect, $redirect_notsurewhatthisis, $user ){ $data = self::$data;
global $current_user; if ( is_user_logged_in() && ! current_user_can( 'edit_posts' ) && ( is_front_page() || is_home() ) ) { wp_redirect( get_bloginfo('url') . '/members/'. $current_user->user_login . '/profile/'); exit(); }
else if(is_user_logged_in()){ $lwa_redirect = self::getLoginRedirect($user); if( $lwa_redirect != '' ){ wp_redirect($lwa_redirect); exit(); } } return $redirect; }
Allerdings wird dieser zugefügte Passus einfach ignoriert. Beim Login auf der Startseite, bleibt man auf der Startseite.. Hat jemand eine Idee was ich falsch mache ?
Beste Grüße