Como redirect após o login, obtendo uma variável da url (por exemplo, com o idioma)

Eu uso o formulário de login padrão. Eu quero que os usuários com certo papel sejam redirecionados após o logon bem-sucedido para a página inicial, mas no idioma que o usuário está usando no momento do logon.

Esta é uma instalação antiga do WP que usa o mqTranslate para dar funcionalidade multifuncional ao WP. Portanto, há um parâmetro na url que tem o valor da linguagem no caso do segundo idioma e também nos formulários de login, registro e senha perdidos para mostrar a cada usuário a forma de linguagem adequada. Quando um usuário efetuou o login com sucesso, preciso redirecioná-lo para casa em seu idioma.

Aqui estão os filtros para geralmente construir links para os formulários no idioma escolhido pelo usuário:

add_filter( 'login_url', 'my_login_page', 10, 2 ); function my_login_page( $login_url, $redirect ) { $redirect = qtrans_getLanguage(); if($redirect == '') $redirect = $_GET['lang']; $new_login_url = site_url() . '/wp-login.php?lang=' . $redirect; return $new_login_url; } add_filter( 'register_url', 'my_reg_page' ); function my_reg_page( $register_url ) { $lang = qtrans_getLanguage(); if($lang == '') $lang = $_GET['lang']; return site_url() . '/wp-login.php?action=register&lang=' . $lang; } add_filter( 'lostpassword_url', 'my_lostpwd_page' ); function my_lostpwd_page( $lostpassword_url, $redirect = 'es') { $redirect = qtrans_getLanguage(); if($redirect == '') $redirect = $_GET['lang']; return site_url() . '/wp-login.php?action=lostpassword&lang=' . $redirect; } 

Até aqui tudo está correto, meu problema é quando eu tento redirect o formulário de login após o sucesso logado na página inicial no idioma desejado.

 // Redirect non-admins to the homepage after logging into the site. function aux_login_redirect( $redirect_to, $request, $user ) { if($_GET['lang'] === 'en') : $langvar = 'en'; elseif($_GET['lang'] === 'es') : $langvar = 'es'; else : $lang = qtrans_getLanguage(); $langvar = $lang; endif; return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : site_url() . "/?lang=" . $langvar; } add_filter( 'login_redirect', 'aux_login_redirect', 10, 3 ); 

Como eu posso ver nos meus testes, o login_redirect é triggersdo duas vezes, na primeira vez que o usuário chega à página de login, neste momento o filtro ainda pode ler a variável $ _GET [‘lang’], mas quando o usuário preencher o formulário e Clique no botão para iniciar, então o filtro é triggersdo por segunda vez e, em seguida, o URL perdeu as variables ​​e não há o redirecionamento para a página inicial desejada.

http://domain.com/wp-login.php?lang=pt deve redirect para http://domain.com/?lang=en

Eu tentei também com $ _SESSION ou variables ​​globais, mas como o filtro é chamado antes do login é enviar e depois, carregando a página sem as variables ​​em segundo tempo, todas as informações adicionais são perdidas.

Desabilitei todos os plugins e tentei sem eles e o problema persistiu. Não tenho a certeza se o comportamento defauto inclui o carregamento do formulário de login duas vezes e, em qualquer caso, seria bom se alguém tiver alguma sugestão sobre como conseguir o redirecionamento desejado.

desde já, obrigado

Solutions Collecting From Web of "Como redirect após o login, obtendo uma variável da url (por exemplo, com o idioma)"