Você deseja redirecionar os usuários de volta para a página que estavam visualizando após o login? Embora provavelmente exista um plugin para isso, criamos um trecho de código rápido que você pode usar para redirecionar o WordPress de volta para a página de referência após o login.
Instruções:
Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou a um plugin específico do site:
if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) ) {
add_filter('login_redirect', 'my_login_redirect', 10, 3);
function my_login_redirect() {
$location = $_SERVER['HTTP_REFERER'];
wp_safe_redirect($location);
exit();
}
}
Observação: Se esta é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia sobre como copiar / colar trechos de código corretamente no WordPress, para não quebrar acidentalmente seu site.
Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: 62 melhores temas gratuitos de blog para WordPress e como criar um formulário de contato no WordPress.
Obrigado pelo seu artigo.
Você poderia fornecer o trecho de código completo para a mesma ação com o WooCommerce, pois tentei adicionar as diferentes partes do código, mas temo ter cometido alguns erros. O resultado falhou.
Muito obrigado desde já.
E existe o mesmo código para o processo de logout?
Eu quero que qualquer usuário que faça login a partir de uma página diga https://example.com/asset/* seja redirecionado de volta para essa página após o login. O que preciso fazer para que isso funcione?
Você quer apenas redirecionar em https://example.com/asset/*?
O trecho acima deve redirecionar os URLs das páginas em geral.
Olá, o código funciona bem com o plugin Ultimate Member?
Olá,
Não consigo fazer funcionar.
Eu uso isto:
add_action(‘init’,’custom_login’);
function custom_login(){
global $pagenow;
$substitute_login_page = str_replace(‘wp-login.php’,’my-account’, $pagenow);
if( ‘wp-login.php’ == $pagenow && $_GET[‘action’]!=”logout” && $_GET[‘action’]!=”lostpassword”) {
wp_redirect($substitute_login_page);
exit();
}
}
para usar a página de login do Woocommerce em vez de wp-login.php (meu site é uma loja online). E funciona.
Eu tento retornar o usuário para a página de postagem de blog/produto único visualizada antes do login usando o filtro listado aqui ( add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’); ), mas não está funcionando.
Eu acho que o filtro e minha ação não podem funcionar juntos. Eu acho que a página de login do Woocommerce remove a parte de redirecionamento da URL.
Como posso conseguir o redirecionamento para a página anterior após o login na página minha-conta?
Obrigado desde já!
Infelizmente, pode haver uma série de causas. Você pode querer tentar uma prioridade diferente para o filtro.
UAU!! esse funcionou perfeitamente para mim. obrigado
Que bom que ajudou, Vinoth
Como devo modificar este código para redirecionar os usuários após um cadastro?
Olá Ole, espero que este snippet possa te ajudar: https://www.isitwp.com/redirect-a-successful-registration-page/
Se tiver mais perguntas, sinta-se à vontade para entrar em contato.
Olá senhor,
Estou usando meu próprio código para cadastro e login. Como usar o código mencionado acima lá. Por favor, ajude
eu quero desta outra forma
eu quero mostrar o produto antes de baixar ou comprar, quero facilitar o login para download digital
Não tenho certeza se entendi completamente o que você procura. Você pode dar mais detalhes?
Eu quero mostrar o botão de login para download primeiro e se o usuário se registrar e fizer login, o site deve mostrar os preços e se clicado, deve ir para o download como mostrado na imagem
https://snag.gy/rTRloi.jpg
Isso não funciona para mim usando WP 4.1.1 com o tema FULLBY e o plugin Simple WordPress Membership
Olá, isso não mudou nada para mim. Alguma sugestão? Estou procurando essa solução há um tempo.
quando você faz login para testar este script, em qual página você está? você está na página wp-login.php ou em outra página.
Sim, na página wp-login.php.
Esse seria o motivo, a ideia por trás deste trecho de código é que se você tiver um formulário de login na sua barra lateral ou em outro lugar, por exemplo. Eu estaria lendo o post e inserindo meus dados para fazer login, eu faria o login e seria redirecionado de volta para a página de onde fiz o login.
Ok, obrigado. Então, estou apenas usando o widget padrão WP Meta Login. Em uma postagem, antes de comentar, você deve fazer login. Na barra lateral está o widget Meta/Login que leva você para a página wp-login.php quando você clica em ‘Entrar’. Uma vez logado na página wp-login.php, ele retorna o visitante para a Página Inicial sempre, em vez da postagem que eles estavam visualizando anteriormente. Por favor, me diga se seu código funcionará de alguma forma para isso. Obrigado!
Oi Karena,
mande uma mensagem para mim pelo formulário de contato, será mais fácil. Os comentários podem ficar um pouco longos.
Eu também preciso muito disso. Minha página de notícias restringe o conteúdo apenas para assinantes. Quando um assinante carrega um artigo, a mensagem de erro é exibida, mas eles sempre podem fazer login usando o formulário do widget na barra lateral. Meu problema é que, quando eles fazem login com sucesso, eles não são redirecionados para o último artigo em que estavam.
Alguém sabe como fazer isso para um login do woo-commerce?
Tente isto,
add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’);
function wc_login_redirect( $redirect_to ) { $redirect_to = ‘http://mysite.com/shop’; return $redirect_to; }
Mas para redirecioná-lo de volta para a página de referência, não para uma página estática?
deve ser capaz de usar o código no exemplo acima, mas eu primeiro verificaria para ter certeza de que o código de login funciona e depois apenas substituiria
$redirect_to = ‘http://wpsnipp.com’; return $redirect_to;
por
$location = $_SERVER[‘HTTP_REFERER’]; wp_safe_redirect($location); exit();
Qual é o uso de $redirect_to após a substituição. O código não está funcionando para mim 🙁
Olá Aayush, isso deve funcionar sem problemas, quando um usuário faz login no woo commerce, ele será redirecionado neste caso para wpsnipp.com. Coloque isso dentro do functions.php do seu tema do wordpress, certifique-se também de que você tem o woo commerce instalado, caso contrário, isso não funcionará.
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’); function wps_login_redirect( $redirect_to ) { $redirect_to = ‘http://wpsnipp.com’; return $redirect_to; }
Olá Kevin,
Eu tentei este código e ele funciona:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’); function wps_login_redirect( $redirect_to ) { $redirect_to = ‘http://wpsnipp.com’; return $redirect_to; }
Mas este não funcionou:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
}
Eu apreciaria se você pudesse me ajudar,
Atenciosamente
Eu imagino que HTTP_REFERER esteja vazio.
http://php.net/manual/en/reserved.variables.server.php
O endereço da página (se houver) que encaminhou o agente do usuário para a página atual. Isso é definido pelo agente do usuário. Nem todos os agentes de usuário definirão isso, e alguns fornecem a capacidade de modificar HTTP_REFERER como um recurso.
Obrigado. Funcionou para mim
Alguém teve sucesso com este código integrado a algum site S2Member? A forma como o plugin S2Member lida com o redirecionamento pós-login pode estar substituindo o código sugerido.
Para garantir, além de criar um plugin de funcionalidade, atualizei o próprio arquivo functions.php dentro do meu tema pai, bem como o functions.php dentro do tema filho que meu site realmente usa. Certifiquei-me de que a variável post ID estava sendo atualizada para aquela que a página de login do Wordpress realmente usa (“user_login”), em oposição a “login_location”.
Aguardando ansiosamente por qualquer experiência com redirecionamento bem-sucedido em sites que tenham o plugin S2Member instalado e ativado.
Abraços,
Darren
Olá Darren,
s2 tem algumas funções integradas para redirecionamento de login, por exemplo:
add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2);
function s2_redirect($redirect, $vars = array()){
// bla bla bla código……
return $redirect;
}
Eu não testei isso, mas algo nessa linha poderia funcionar para você.
if ( (isset($_GET[‘action’]) && $_GET[‘action’] != ‘logout’) || (isset($_POST[‘login_location’]) && !empty($_POST[‘login_location’])) ) { add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2); function s2_redirect($redirect, $vars = array()){ $redirect = $_SERVER[‘HTTP_REFERER’]; return $redirect; } }
Isso não funciona para mim. Incompatível com 3.8.1?
Isso não funciona para mim. Incompatível com 3.8.1?
Isso não funciona para mim. Incompatível com 3.8.1?
Logicamente, não seria mais correto simplesmente usar
add_filter(‘login_redirect’, ‘my_login_redirect’, 10, 3);
E então mover a instrução if para dentro da própria função?
Em qual página eu colocaria isso? Estamos falando de uma página com um link para a página de login, a página de login e a página redirecionada?
Coloque isso no functions.php e redirecionará para a página que eles estavam visualizando após o login.
INCRÍVEL! Ainda melhor do que eu imaginava que poderia ser…
Ótimo! Obrigado
Legal, fico feliz que você gostou do snippet.
Bom!
Sim, concordo Justin! – Tyler escreveu isso depois de precisar para o trabalho, tenho certeza que usarei este em um projeto em breve.