Redirecionamento de login para a página anterior


8

Eu tenho uma página de login personalizada em http://netballscoop.com/log-in/

Quando você preenche o nome de usuário e a senha, ele o redireciona para a página anterior em que você estava perfeitamente. Quando você clica em Logoff, ele o redireciona para a mesma página. Então, tudo isso funciona bem.

Se você deixar o nome de usuário / senha em branco ou tiver um erro, isso levará você ao wp-login. Para evitar isso, usei o código em /programming/11477107/redirect-away-from-login-page

add_action('login_redirect', 'redirect_login', 10, 3);
function redirect_login($redirect_to, $url, $user) {
if($user->errors['empty_password']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['empty_username']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['invalid_username']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else if($user->errors['incorrect_password']){
    wp_redirect(get_bloginfo('url').'/log-in-error/');
}
else{
    wp_redirect(get_bloginfo('url').'/log-in');
}
exit;
}

Isso funciona muito bem para erros de logon no meu site. Mas agora o redirecionamento de login leva você a http://netballscoop.com/members/testing (o usuário 'Testing' é levado para a página de perfil do membro do BuddyPress).

Como redireciono o usuário para a página anterior quando ele faz login?


Minha resposta postada anteriormente interpretou mal a sua pergunta um pouco, então eu a apaguei. Você já tentou vincular a ação wp_login ? É um dos últimos disparados ao fazer login com êxito. Eu usei em um site que criei recentemente usando o BuddyPress e funcionou como um encanto.
Eric Allen

Oi @allenericr, para ser sincero, não saberia por onde começar. Meu conhecimento de php / functions / etc é muito limitado. Você poderia postar o que está usando nesse site se achar que é uma alternativa melhor?
Tanya

Respostas:


8

Você pode filtrar a login_redirectfunção assim, adaptar de acordo com suas necessidades.

add_filter('login_redirect', 'redirect_previous_page', 10, 1);

function redirect_previous_page( $redirect_to ){
    global $user;

    $request = $_SERVER["HTTP_REFERER"];

    if ( in_array( $user->roles[0], array( 'administrator') ) ) {

        return admin_url();

    } elseif ( in_array( $user->roles[0], array( 'subscriber') ) ) {

        return $request;
    } 

    return $redirect_to;
}

Atualização 1:

O código (acima) foi modificado acima e testado - funciona.

Atualização 2: (por Tanya)

Conversou com @userabuser e veio com esta resposta que funciona.

// Redirect to previous page 
remove_all_filters('login_redirect', 99);
add_filter('bbp_user_login_redirect_to', 'function_name');

Nota importante:

Acontece que Tanya estava usando o plug-in do fórum bbPress, portanto, apesar do snippet original que usa,

add_filter('login_redirect', 'function_name'); //the standard WordPress API filter

que está correto e funciona em condições "normais" do WordPress, nesse caso, foi substituído por prioridade pelo filtro bbPress,

add_filter('bbp_user_login_redirect_to', 'function_name'); //the bbPress API filter

Agora, como a documentação no site bbPress.org , que detalha essas ações e ganchos, está mal organizada e um tanto incompleta (pelo que sei), sugiro que (qualquer um) busque mais informações sobre o que ganchos, onde e o que filtra , veja este recurso aqui, que fornece uma lista detalhada de ganchos e filtros.

Notas: (diversos)

Altere 'subscriber'para corresponder à função que você está usando para esse tipo de usuário. Também pode aceitar várias funções, pois está na forma de uma matriz.

in_array( $user->roles[0], array( 'subscriber', 'role2, role3', 'etc')

@Tanya Código editado para incluir os parâmetros opcionais. $ user pode não estar acessível. Experimente esta atualização e me avise.
Adam

@ Tanya Oi Tanya, obrigado pela atualização. Enquanto isso, você pode excluir seus últimos comentários (clique no pequeno x ao passar o mouse) para que possamos limpar o segmento de comentários. Também removerei meus comentários irrelevantes.
Adam
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.