WordPress login hooks – how to make login redirect in correct behavior?
-
Hello everyone!
In a polylang’s 5-languages website I am using WPS Hide Login plugin and Ligin/Signup Popup plugin. So for login and logout I have to manage correctly behavior in those two scenarios:- 1°) I am in my country and I use the website in local language which is browser’s one;
2°) I am in another country and I use the website in my language selecting anguage by Polylang so that means like :
pll_current_language() != substr($_SERVER[‘HTTP_ACCEPT_LANGUAGE’], 0, 2);
Having WPS Hide Login settled without any redirection fields settled and Success Endpoint deactivated to manage by language I reached to manage logouts correctly between those two scenarios to redirect to homepage with
logout_url
hook:function my_logout_redirect($link) { $session_lang = pll_current_language(); $browser_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if ($session_lang != $browser_lang && ! is_admin() ) { $redirect_url = "https://example.com/wpshidelogin/?action=logout&redirect_to=https%3A%2F%2Fexample.com%2F" . $session_lang . "%2F" . "&_wpnonce=" . wp_create_nonce( 'log-out' ); return $redirect_url; } if ($session_lang == $browser_lang && ! is_admin() ) { $redirect_url = "https://example.com/wpshidelogin/?action=logout&redirect_to=https%3A%2F%2Fexample.com%2F" . "&_wpnonce=" . wp_create_nonce( 'log-out' ); return $redirect_url; } if (is_admin()) { $redirect_url = "https://example.com/wpshidelogin/?action=logout&redirect_to=https%3A%2F%2Fexample.com%2F" . "&_wpnonce=" . wp_create_nonce( 'log-out' ); return $redirect_url; } return $link; } add_filter( 'logout_url', 'my_logout_redirect', 10, 3);
but to manage login, redirecting to homepage once logged, it looks like a bit messing up using this code:
function my_login_redirect( $redirect_to, $request, $user ) { //function my_login_redirect() { $session_lang = pll_current_language(); $browser_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); $redirect_url = ""; if (!is_admin()) { $redirect_url = "https://example.com" . ( ($session_lang != $browser_lang ) ? $session_lang : "" ) . "/"; } if (is_admin()) $redirect_url = admin_url(); /* if ($current_language == "it" && $current_language != substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) && current_user_can('administrator') == false) return "https://example.com/it/"; else return "https://example.com/wp-admin"; if ($current_language == "en" && $current_language != substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) && current_user_can('administrator') == false) return "https://example.com/en/"; else return "https://example.com/wp-admin"; if ($current_language == "es" && $current_language != substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) && current_user_can('administrator') == false) return "https://example.com/es/"; else return "https://example.com/wp-admin"; if ($current_language == "fr" && $current_language != substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) && current_user_can('administrator') == false) return "https://example.com/fr/"; else return "https://example.com/wp-admin"; if ($current_language == "de" && $current_language != substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) && current_user_can('administrator') == false) return "https://example.com/de/"; else return "https://example.com/wp-admin"; */ //return home_url(); //wp_safe_redirect($redirect_url); //exit; return $redirect_url; } //add_action('wp_login', 'my_login_redirect'); add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
where it always goes to login page (yes, as login page I created a page with
[xoo_el_inline_form active=”login”]
shortcode since I use Login/Signup Popup plugin for login/logouts…. even if I log in in admin panel it goes to Login page instead of wp-admin…and I got stuck at this point… Any suggests? If needed , I can provide more informations about behavior happens on my website with thislogin_redirect
hook….Thanks in advance! Cheers
- 1°) I am in my country and I use the website in local language which is browser’s one;
- The topic ‘WordPress login hooks – how to make login redirect in correct behavior?’ is closed to new replies.