Redirecionamento do WooCommerce após o logout [Guia definitivo]

Publicados: 2022-01-10

Redirecionamento WooCommerce após o logout O redirecionamento do WooCommerce após o logout pode ser criado usando o código nesta postagem para redirecionar os clientes do WooCommerce para uma página ou postagem específica ou um URL externo após o logout. Neste artigo, quero demonstrar como criar esse redirecionamento com código. Se você perdeu meu tutorial anterior, eu ilustrei como criar o código de acesso da página de logout do WooCommerce, que pode ser um bom lugar para começar antes de criar o redirecionamento de logout do WooCommerce.

Existem plugins que podem ser usados ​​para criar redirecionamentos de logout do WooCommerce, mas eles não são tão bons quanto deveriam ser; Estou trabalhando em uma solução melhor que ajudará você a gerenciar o redirecionamento do WooCommerce após o logout, assim como o plugin que criei para o WooCommerce Logout After Checkout.

Se você gostaria de ser um early adopter, entre em contato comigo, para que eu possa adicioná-lo na lista, pois o plugin estará pronto em 2 semanas a partir de hoje.

Para esta postagem, quero compartilhar a abordagem de código que você pode usar para criar um redirecionamento de logout eficiente do WooCommerce, mas o plug-in terá várias opções condicionais que estendem as opções de redirecionamento padrão, como fiz no WooCommerce Redirect after checkout plugin.

Seções de redirecionamento de logout do WooCommerce - Deslize e pule para a seção

Na maioria dos meus projetos de clientes, eu estava tendo dificuldade em fazer o redirecionamento de logout funcionar em sites WooCommerce. Por esse motivo, decidi montar este guia definitivo de criação de redirecionamento do WooCommerce após o guia de logout.

Espero que possa ser um ótimo lugar para usuários com experiência em tecnologia e sem experiência em tecnologia para encontrar uma solução para criar a melhor opção de redirecionamento de logout do WooCommerce para seus projetos.

Como esta não é uma postagem de blog comum, é longa e pode levar mais tempo para ler e entender todos os detalhes. Gostaria de ajudá-lo a percorrer as diferentes seções para que você possa escolher rapidamente a solução necessária para o seu projeto.

Índice

  1. Redirecionamento da página inicial - após o logout redirecionar para a página inicial no Woocommerce
  2. Redirecionamento da página atual - botão de logout do Woocommerce e redirecionamento para a página atual
  3. Página específica por redirecionamento de ID – Página de redirecionamento de logout do Woocommerce
  4. Redirecionamento da função do cliente – Redirecionamento de logout do cliente Woocommerce
  5. Redirecionamento da página anterior - Redirecionamento de login do Woocommerce para a página anterior
  6. Redirecionamento de página da minha conta – Woocommerce Redirecionamento de logout da minha conta
  7. Redirecionamento de URL externo – Função de redirecionamento de logout do Woocommerce Php Snippet
  8. Corrigir erro de redirecionamento de logout – o redirecionamento de logout do Woocommerce não está funcionando
  9. URL de redirecionamento de logout do WP – URL de logout do Woocommerce
  10. Plugin de redirecionamento de logout do Woocommerce
  11. Criando redirecionamento de logout no WordPress – funções principais
  12. Redirecionamento de login do WooCommerce: woocommerce_login_redirect Hook
  13. Função de Logout do WordPress – wp_logout_url()
  14. Gancho de filtro do WordPress logout_redirect
  15. Gancho de filtro do WordPress login_redirect
  16. Redirecionamento multisite do WooCommerce após o logout
  17. Gancho de filtro: allowed_redirect_hosts
  18. Função de redirecionamento do WordPress: redirecionamento wp_
  19. Função de redirecionamento do WordPress: wp_safe_redirect()
  20. Conclusão

Redirecionamento WooCommerce após o logout

redirecionamento de logout do woocommerce Por padrão, o WooCommerce após o logout, registro e login redireciona os usuários para a “minha conta”. Esse comportamento não é desejável principalmente em sites voltados para aumentar suas vendas.

As três ações de gerenciamento de usuários mais comuns em seu site WooCommerce incluem:

  • Registro do usuário
  • Login de usuário
  • Registro do usuário
  • Editar perfil de usuário
  • Logout do usuário

Cada uma dessas ações pode ser aprimorada não apenas para facilitar a navegação do usuário, mas também para aumentar a perspectiva de vendas para clientes novos e existentes. O URL ou link de logout do Woocommerce está localizado por padrão na página Minha conta e a maioria dos proprietários de lojas WooCommerce deseja alterar o redirecionamento de logout na página Minha conta para redirecionar para uma página específica ou funil de vendas WooCommerce.

Como redirecionar o logout da página Minha conta?

Uma das perguntas mais comuns sobre o logout do WooCommerce é como criar um logout automático da página Minha conta e redirecionar para outro site ou para uma página interna.

Esta é a questão que será abordada e resolvida neste post, até o final deste tutorial, você deve criar confortavelmente um redirecionamento de logout personalizado do WooCommerce, mesmo com pouco ou nenhum conhecimento prévio de codificação.

redirecionamento woocommerce após sair da página Minha conta

Por que criar redirecionamento de logout do WooCommerce

Um bom site de comércio eletrônico deve aproveitar todas as oportunidades para redirecionar os usuários para as páginas que podem aumentar as vendas e conversões após cada ação – login, logout, carrinho, checkout, registro etc.

Trata-se de criar um bom funil de vendas WooCommerce para promover vendas cruzadas de outros produtos, vendas baixas e outros produtos relacionados ou produtos mais vendidos.

Os redirecionamentos de logout do WooCommerce permitem que você aumente sua taxa de conversão de vendas redirecionando os clientes após o logout para uma página de destino de vendas ou uma página de redirecionamento de funil estratégico do WooCommerce – em vez de redirecionar o cliente para a página padrão “minha conta”.

Este tutorial mostrará como alterar a configuração padrão do redirecionamento do WooCommerce após o logout e redirecionar os usuários para URLs personalizados, como “funis de vendas”, “ofertas especiais”, “catálogo”, a página anterior, página de destino especial ou qualquer link externo que é adequado para aumentar as vendas e conversões.

Neste post, compartilharei com você uma dica rápida sobre como criar um redirecionamento personalizado após o logout do WooCommerce, assim como compartilhei anteriormente como criar o redirecionamento do WooCommerce após o checkout. Idealmente, o logout padrão do WooCommerce não é tão suave quanto deveria ser. Ele mostra uma mensagem de confirmação que é um incômodo para vários usuários.

Discuti anteriormente como remover a mensagem de confirmação de logout do WooCommerce, o que torna mais fácil para seus clientes fazer logout automaticamente do seu site WooCommerce sem que a mensagem de confirmação apareça.

Também compartilhei o trecho de código de logout do WooCommerce que você pode estender neste tutorial para torná-lo mais eficiente adicionando a opção de redirecionamento, assim como fiz no redirecionamento do WooCommerce após o plugin de checkout que apresenta opções de redirecionamento condicional.

Alterar o redirecionamento de logout do WooCommerce alterar o redirecionamento de logout do woocommerce

Alterar o redirecionamento de logout do WooCommerce é outra melhoria importante da experiência de logout do cliente que você deve considerar, assim como eu ilustrei como adicionar o link de logout do WooCommerce ao menu.

Agora, vamos nos aprofundar na criação da melhor opção de redirecionamento de logout do WooCommerce que você pode implementar imediatamente em sua loja para melhorar a experiência do usuário.

Esta opção é simples, pois precisamos usar um filtro para verificar o evento de logout quando ele ocorrer.

Quando o logout do WooCommerce ocorre, podemos conectar este gancho – woocommerce_login_redirect e passar uma função de retorno de chamada com nossa lógica de redirecionamento para a página onde queremos redirecionar o usuário após o logout.

Se você não estiver familiarizado com os ganchos de ação e ganchos de filtro do WooCommerce ou WordPress, este tutorial sobre ganchos apply_filters e do_action pode ser um bom lugar para começar a se acostumar com filtros e ganchos.

É sempre uma boa prática antes de começar a criar a função de redirecionamento de logout do WooCommerce, você deve verificar se o usuário está logado. Agora vamos descrever as várias opções que você pode usar para criar o redirecionamento de logout do WooCommerce.

Cada uma dessas funções usa ganchos e funções de ação padrão do WooCommerce e WordPress que são discutidos em detalhes nas outras seções deste tutorial.

Redirecionamento da página inicial – após o logout redirecionar para a página inicial no Woocommerce

Um dos redirecionamentos mais comuns do WooCommerce após o logout é para a página inicial. Por padrão, o WooCommerce redireciona para a página Minha conta após a conclusão do logout.

Se você deseja redirecionar o usuário para a página inicial, considere adicionar este código ao seu arquivo functions.php do tema ativo do WooCommerce.

Basta copiar este código para o seu arquivo theme functions.php e testar para ver se o usuário do WooCommerce é redirecionado para a página inicial após o logout.

Redirecionar para a página inicial após o snippet de logout

Você também pode adicionar este trecho de código ao arquivo de plugins e ele funcionará perfeitamente.

 add_action('wp_logout','njengah_homepage_logout_redirect');

function njengah_homepage_logout_redirect(){

    wp_redirect( home_url() );

    saída;

}

Como funciona o código de redirecionamento

Existem duas funções e um gancho de ação usado neste código para criar o redirecionamento WooCommerce após o logout, como no código acima. Vamos olhar atentamente para o papel de cada uma dessas funções e gancho:

Gancho: wp_logout

Este código usa o gancho de ação wp_logout que foi discutido em detalhes neste artigo na seção – gancho do WordPress – wp_logout. Idealmente, este é um gancho de logout padrão do WordPress que é acionado após a execução do logout.

Função: wp_redirect()

Nesse caso, se você observar a função de retorno de chamada, se fizer uso da função wp_redirect() , que também foi explicada em detalhes na seção wp_redirect, seção de funções do WordPress.

Função: home_url()

A função final usada na função de retorno de chamada é a home_url() , esta é uma função do WordPress que retorna a url da página inicial do site atual.

home_url( string $path = '', string|null $scheme = null )

Por exemplo, você pode exibir o URL da página inicial do site atual usando a função home_url() da seguinte forma:

 $url = home_url();

echo $url;

Portanto, neste caso do redirecionamento do WooCommerce após o logout, ele retornará a URL do site atual e a adicionará como uma string à função wp_redirect() .

Para entendermos como o gancho de redirecionamento de logout do WooCommerce funciona à medida que o aplicamos em seu código, precisamos examinar cada uma dessas funções padrão do WordPress e o papel que elas desempenham na criação de redirecionamentos.

Redirecionamento da página atual – botão de logout do Woocommerce e redirecionamento para a página atual

O segundo redirecionamento mais comum do WooCommerce após o logout é o redirecionamento para a página atual após o logout de um usuário. Isso é importante quando você deseja que o usuário permaneça na mesma página que estava quando saiu.

Nesse caso, precisamos conhecer a página do usuário atual e aplicá-la à lógica de redirecionamento de logout do WooCommerce.

Para criar o redirecionamento do WooCommerce para a página atual após o evento de logout, precisamos usar a função get_permalink() para nos informar a página atual e aplicá-la à função de retorno de chamada de logout.

Nesse caso, você deve adicionar o seguinte trecho de código ao seu functions.php ou aos seus arquivos de plug-in para executar o redirecionamento do WooCommerce após o logout na página atual.

 function njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

       return $logout_url . '&redirect_to=' . get_permalink();

}

add_filter( 'logout_url', 'njengah_redirect_current_page_after_logout', 10, 2 );

Como o código funciona

Esse código é composto por um gancho de filtro logout_url e a função de retorno de chamada tem a função get_permalink() do WordPress que estabelece a página atual para os usuários front-end e a usa para retornar a URL de logout.

Filtro: logout_url()

Nesse caso, usamos logout_url que é outro filtro de logout principal do WordPress e WooCommerce que foi discutido em detalhes na seção abaixo da função WordPress logout_url .

Esse código pode não funcionar para todos os usuários e provavelmente falhará para os usuários no back-end do administrador. Este é um redirecionamento apropriado após o logout para clientes na página Minha conta, mas não para outras funções.

Para fazê-lo funcionar também para os usuários no backend, precisamos substituir a função get_permalink() pelo valor da consulta HTTP que representa a página atual.

PHP Super Global $_SERVER['HTTP_HOST']

Então, nesse caso, precisamos adicionar este $_SERVER['HTTP_HOST'] super global como alternativa à função get_permalink() . O $_SERVER é uma variável super global do PHP que contém informações sobre cabeçalhos, caminhos e localizações de script.

O super global $_SERVER['HTTP_HOST'] retorna o cabeçalho Host da solicitação atual. Portanto, nos ajuda a obter a página atual para que possamos aplicá-la ao URL de redirecionamento do WooCommerce após o logout. O novo código que funciona para todos os usuários deve ser o seguinte:

 function njengah_redirect_current_page_after_logout( $logout_url, $redirect ){

      return $logout_url . '&redirect_to=http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

}

add_filter( 'logout_url', 'njengah_redirect_current_page_after_logout', 10, 2 );

Agora você pode criar um botão para encerrar o link de redirecionamento seguindo o tutorial que compartilhei anteriormente sobre como criar o botão de logout do WooCommerce.

Redirecionamento de página específica – Página de redirecionamento de logout do Woocommerce (por ID)

Em alguns casos, você pode querer redirecionar os usuários para uma página específica após o logout. A página pode ser adicionada à lógica de redirecionamento de logout do WooCommerce usando o ID da página.

Nesse caso, você precisa saber o ID da página para passá-lo na função de redirecionamento. Você pode obter o redirecionamento de logout do WooCommerce para uma página específica por id usando o seguinte trecho de código.

 add_action('wp_logout','njengah_specific_page_logout_redirect');

function njengah_specific_page_logout_redirect(){

    wp_redirect(get_permalink($pageId));

    saída;

}

Como o código funciona

Este código usa o gancho de ação wp_logout e na função callback temos a função get_permalink() com uma variável $pageID que deve ser substituída pelo ID da página para onde você deseja redirecionar o usuário após o checkout.

Se você não tem certeza sobre o ID da página, pode usar este post que escrevi sobre como obter o ID da página no WordPress.

Função WooCommerce: wc_get_page_id()

Você também pode usar o nome da página para onde deseja redirecionar o usuário junto com a função WooCommerce wc_get_page_id() como no trecho de código abaixo:

 add_action('wp_logout','njengah_specific_page_logout_redirect');

function njengah_specific_page_logout_redirect(){

       wp_redirect( get_permalink( wc_get_page_id( 'loja' ) ) );

      saída;

}

A função wc_get_page_id() recupera ids de página e é comumente usada para myaccount, edit_address, shop, cart, checkout, pay, view_order, termos e retorna -1 se nenhuma página for encontrada.

Redirecionamento da função do cliente – Redirecionamento de logout do cliente Woocommerce

Outro cenário de redirecionamento após logout do WooCommerce é onde você deseja redirecionar os usuários com base na função. Você provavelmente deseja redirecionar o cliente para uma determinada página após o logout, em vez do redirecionamento padrão de Minha conta após o logout.

Nesse caso, você pode executar o redirecionamento após o logout apenas para a função do cliente ou outra função ou grupo de funções usando o snippet de código compartilhado abaixo:

 if( is_user_logged_in() ) { // verifica se existe um usuário logado       

    $usuário = wp_get_current_user(); // obtendo e configurando o usuário atual

          $roles = (array) $user->roles; //obtendo o papel

           // $roles[0]; // Retorna um papel

            //retorna $funções; // retorna array dos papéis

             //Faça a comparação aqui 

              if($roles[0] == 'cliente'){

                 // Executa o redirecionamento se o papel do usuário atual for igual ao cliente

                    add_action('wp_logout','njengah_specific_page_logout_redirect');

                       function njengah_specific_page_logout_redirect(){

                        wp_redirect(get_permalink($pageId));

                             saída;

                   }

           }

 }

Como o código funciona

Começamos verificando se o usuário está logado como expliquei em um post anterior sobre como descobrir se o usuário do WordPress está logado.

Obter a função de usuário

A segunda etapa foi obter a função do usuário atual no WordPress usando a função wp_get_current_user() e exigindo a função do usuário atual.

Comparar e executar o redirecionamento se a função corresponder ao cliente

O terceiro passo foi agora fazer a comparação do papel obtido no passo anterior com o papel do cliente e se o papel corresponder você agora adiciona a ação de redirecionamento e a função.

Você pode substituir a função por outra função, incluindo as funções personalizadas. Você também pode alterar a página de redirecionamento passando um ID de página diferente na função get_permalink() .

Redirecionamento da página anterior- Redirecionamento de logout do Woocommerce para a página anterior

Você pode criar um redirecionamento WooCommerce após sair para a página anterior usando as sessões. Nesse caso, você precisa criar uma sessão e adicioná-la a uma função e usá-la na lógica para criar o redirecionamento após o logout para a página anterior.

Você pode usar o trecho de código abaixo para criar o redirecionamento de logout do WooCommerce para a página anterior:

 // Inicia sessão global para salvar a url de referência
function start_session() {
     session_start();
}

add_action('init', 'start_session', 1);

// Pega o URL do referenciador e salva

function redirecionamento_url() {
    if (is_user_logged_in()) {
        $_SESSION['referer_url'] = wp_get_referer();
    } senão {
        session_destroy();
    }

}
add_action( 'template_redirect', 'redirect_url' );

//Redirecionamento de logout

function njengah_logout_redirect() {

    if (isset($_SESSION['referer_url'])) {

        wp_redirect($_SESSION['referer_url']);

    } senão {

        wp_redirect(home_url());

    }

}

add_filter('wp_logout', 'njengah_logout_redirect', 1100, 2);

Como o código funciona

Este código usou as sessões PHP para criar uma sessão e salvar a URL da página atual e na função de redirecionamento testamos a URL da sessão definida – $_SESSION['referer_url'] .

Se estiver definido, criamos o redirecionamento para essa página como nos outros redirecionamentos de logout que discutimos anteriormente.

Redirecionamento de página da minha conta – Woocommerce Redirecionamento de logout da minha conta

O redirecionamento de logout do WooCommerce da página Minha conta é uma das perguntas mais frequentes sobre o logout do WooCommerce.

Isso não é diferente de outro redirecionamento de logout, na verdade, você pode adicionar o redirecionamento de logout na página Minha conta usando o snippet de código abaixo:

 add_action('wp_logout','njengah_my_account_page_logout_redirect');

function njengah_my_account_page_logout_redirect(){

       wp_redirect(get_permalink($pageId));

                saída;

}

Você pode alterar o valor da variável $pageID na função get_permalink() para corresponder ao ID da página de redirecionamento ou postagem e isso funcionará perfeitamente.

Redirecionamento de URL Externa - Função de Redirecionamento de Logout do Woocommerce Php Snippet:

Se você quiser redirecionar os usuários para uma URL externa após eles saírem da sua loja WooCommerce, você pode fazer isso usando um snippet adicionado às funções do seu tema ou em um plugin personalizado.

Este snippet php da função de redirecionamento de logout do WooCommerce que pode ser adicionado ao arquivo functions.php para criar o redirecionamento após o logout é o seguinte:

 add_action('wp_logout','njengah_redirect_after_logout');

function njengah_redirect_after_logout(){

  wp_redirect( $url);

  saída();

}

Simplesmente adicione este trecho de código no functions.php e substitua a variável $url pelo seu respectivo URL de redirecionamento entre aspas.

Por exemplo, se você quiser redirecionar o usuário para um URL externo após o logout e o URL externo for http://example.com , você pode substituir a variável $url pelo URL completo como no código abaixo:

 add_action('wp_logout','njengah_redirect_after_logout');

function njengah_redirect_after_logout(){

    wp_redirect('http://example.com');

    saída();

}

URL de redirecionamento de logout do WP – URL de logout do Woocommerce

Se você deseja criar um botão de logout do WooCommerce e colocá-lo em um modelo personalizado ou em qualquer outra página, isso ajuda você a conhecer o URL de redirecionamento de logout do WP que você pode adicionar facilmente em qualquer botão ou link.

A seguir está o URL de redirecionamento de logout do WP que pode ser alterado para qualquer outra página alterando o parâmetro 'minha-conta' “

 wp_logout_url(

    get_permalink( wc_get_page_id( 'minha conta' ) )

 );

Você também pode ter o URL externo no URL de redirecionamento de logout do WooCommerce da seguinte forma:

 wp_logout_url(

   'http://example.com/'

);

Você também pode adicionar as funções do WordPress ao URL de redirecionamento de logout do WP da seguinte maneira:

 wp_logout_url(

    home_url()

);

Esse URL de redirecionamento de logout do WP pode ser adicionado em modelos personalizados e também pode ser usado em códigos de acesso ou botões para exibir uma opção de logout em locais que não são os locais padrão para o botão de logout, como widgets, rodapé, menu da barra superior e muito mais.

Corrigir erro de redirecionamento de logout: o redirecionamento de logout do Woocommerce não está funcionando

Se você personalizou o redirecionamento de logout do WooCommerce e ele não funciona, provavelmente há um bug no seu código ou um dos seguintes motivos.

Prioridade de Gancho

O primeiro passo é verificar a prioridade do seu add_action() ou add_filter() em comparação com os outros hooks do WordPress. Essa é uma das causas mais comuns do erro de redirecionamento de logout.

Quanto maior a prioridade do gancho, mais cedo ocorre o carregamento. Se os dois ganchos tiverem a mesma prioridade, aquele colocado em cima do outro é carregado primeiro. Ajustar a prioridade da ação ou gancho de filtro pode ser um bom lugar para iniciar sua depuração.

Erro de código - Erro de sintaxe

A segunda etapa você precisa verificar se todo o código tem um erro e um erro comum é um erro de sintaxe. Possivelmente, ao editar o código, você pode esquecer de colocar uma aspa de fechamento ou um colchete.

Faça uma verificação do código e, de preferência, adicione o código a um verificador de erros de sintaxe PHP.

É melhor se você estiver familiarizado com ferramentas como o Visual Studio ou IDEs como o Netbeans, pois essas ferramentas podem ajudá-lo rapidamente a identificar erros de sintaxe em seu código.

Código adicionado ao arquivo errado

Outra causa comum do erro de redirecionamento de logout do WooCommerce não funcionar é quando você tem o código certo, mas o adiciona no lugar errado. Neste caso, se você estiver adicionando o código a um tema, ele deve ser adicionado estritamente ao arquivo functions.php.

Ao adicionar este código a um plugin você deve ter cuidado para não adicioná-lo dentro de uma classe que não seja instanciada. É uma boa ideia adicioná-lo ao arquivo base do plug-in e também corrigir quaisquer alterações que possam ser necessárias para garantir que o código se encaixe no contexto de sua estrutura de arquivo de plug-in personalizada.

Conflitos de plugin ou tema

Na maioria dos casos, existem plugins ou temas que controlam o redirecionamento de login e logout no WooCommerce. Esses plugins podem entrar em conflito levando ao erro de redirecionamento de logout.

Se você estiver enfrentando um erro de logout de redirecionamento do WooCommerce, poderá começar desativando todos os plugins e usando o tema padrão do WordPress para verificar se o erro é causado por um conflito de plugin ou tema.

Plugin de redirecionamento de logout do Woocommerce

Finalmente, nada torna mais fácil adicionar redirecionamento WooCommerce após o logout do que um plugin bem codificado com os recursos certos, boa experiência do usuário e suporte de classe mundial. Por anos, consertei centenas de problemas de logout, login e registros no WooCommerce e WordPress em geral.

Nas últimas semanas, reuni toda a minha experiência e lições aprendidas sobre redirecionamentos e logout do WooCommerce. Eu construí um URL de redirecionamento de logout notável do WooCommerce que inclui os seguintes recursos:

Recursos de redirecionamento de logout

  • Redirecionamento do WooCommerce após o logout para qualquer página - selecione a página em uma lista suspensa
  • Redirecionamento do WooCommerce após o logout para qualquer produto único - selecione o produto em uma lista suspensa
  • Redirecionamento do WooCommerce após o logout para qualquer postagem única - selecione a postagem em uma lista suspensa
  • Redirecionamento do WooCommerce após o logout para qualquer categoria de produto - selecione a categoria do produto em uma lista suspensa
  • Redirecionamento WooCommerce após o logout para a página atual
  • Redirecionamento WooCommerce após o logout para a página anterior
  • Redirecionamento WooCommerce após o logout para URL externo
  • Redirecionamento do WooCommerce após o logout com base na função
  • Redirecionamento WooCommerce após o logout com base no histórico de compras (adequado para ofertas especiais)
  • WooCommerce força o logout após o checkout

Recursos de redirecionamento de login

  • Redirecionamento do WooCommerce após o login em qualquer página - selecione a página em uma lista suspensa
  • Redirecionamento do WooCommerce após o login em qualquer produto único - selecione o produto em uma lista suspensa
  • Redirecionamento do WooCommerce após o login em qualquer postagem única - selecione a postagem em uma lista suspensa
  • Redirecionamento WooCommerce após o login em qualquer categoria de produto - selecione a categoria do produto em uma lista suspensa
  • Redirecionamento WooCommerce após o login na página atual
  • Redirecionamento WooCommerce após o login na página anterior
  • Redirecionamento do WooCommerce após o login no URL externo
  • Redirecionamento do WooCommerce após o login com base na função
  • Redirecionamento WooCommerce após o login com base no histórico de compras (adequado para ofertas especiais)

O plugin WooCommerce Redirect after Login & Logout (WRAL) deve ser lançado nas próximas semanas. Se você gostaria de ser um early adopter, não fique para trás, pois o lançamento virá com um desconto de 70% OFF.

Você pode se juntar à lista dos 100 primeiros adotantes entrando em contato comigo imediatamente. O lançamento está previsto para 2 de novembro de 2020 .

Criando redirecionamento de logout no WordPress – funções principais

Depois de analisar a maneira rápida de adicionar snippets para criar redirecionamento WooCommerce após o logout, ajuda a destacar as funções e ganchos de logout padrão do WordPress e explicar em detalhes para os desenvolvedores que estão lendo este guia para entender como esses redirecionamentos funcionam.

Essas funções e gancho de ação podem ser úteis para criar redirecionamento WooCommerce após o logout. Em geral, você pode criar o redirecionamento de logout do WooCommerce usando os seguintes ganchos e funções:

  • função wp_logout_url()
  • gancho de ação wp_logout
  • filtro logout_redirect

Quero explicar cada uma dessas funções e como você pode usá-las para criar o redirecionamento WooCommerce após o checkout e por que você pode querer usar uma em vez da outra.

Também é importante destacar a maneira como você pode criar o redirecionamento de login do WooCommerce usando filtros. Existe uma função que também é útil para criar redirecionamento de login no WooCommerce. Vamos começar com o gancho de redirecionamento de login que é muito útil para criar redirecionamento de login no WooCommerce.

Redirecionamento de login do WooCommerce: woocommerce_login_redirect Hook

Este é o gancho especial do WooCommerce que nos permite controlar as funções de redirecionamento de login no WooCommerce. É semelhante à função de logout padrão do WordPress que é aplicada na criação de um redirecionamento do WooCommerce após o logout. Seu uso básico é o seguinte:

apply_filters( 'woocommerce_login_redirect', $redirect, $user );

Como você pode ver, são necessários 2 parâmetros e os parâmetros são os seguintes:

Parâmetro Descrição Exemplo(s) de uso
$redirect Esta é a página de redirecionamento onde o usuário será direcionado após o login.

Pode ser útil alterar o redirecionamento padrão do WooCommerce após o login para permitir que o usuário acesse a página específica após o login.

add_filter('woocommerce_login_redirect', 'login_redirect')

Você pode adicionar o hook filter e na função callback você pode passar a lógica de redirecionamento da seguinte forma:

function login_redirect($redirect_to){
return home_url();
}

Como você pode ver, adicionei o parâmetro $redirect_to e retornei a URL de redirecionamento para redirecionar o usuário para a página inicial após o login.

$user Este é o usuário ao qual a ação de redirecionamento é aplicada.

Isso pode ser particularmente útil quando você deseja criar um redirecionamento após o login para usuários específicos.

Gancho: woocommerce_login_redirect não está funcionando

Este código pode ser usado nos temas e no código do plugin, mas você precisa entender as prioridades para evitar disparar cedo ou tarde, onde isso levará ao cenário comum de woocommerce_login_redirect não funcionar.

Você também precisa descobrir outros motivos que podem fazer com que o woocommerce_login_redirect não funcione. De particular interesse é outro plugin que tem uma função similar ou igual que funciona antes de seu código ser acionado.

Portanto, se você descobrir que woocommerce_login_redirect não está funcionando., a primeira coisa a verificar é a prioridade de um exemplo de caso, você pode ter esses dois trechos de código:

# Prioridade mais baixa

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 1100, 2 );

# Maior prioridade

add_filter( 'woocommerce_login_redirect', 'njengah_login_redirect', 10, 2 );

Como você pode ver em ambos os casos, os números de prioridade são diferentes, a regra básica é que quanto menor o número, maior a prioridade – o que significa que carrega primeiro.

Quando você tem essa função usada em outro lugar do seu tema ou outro plugin e está tentando recriar o redirecionamento do WooCommerce após a função de login ou logout, você precisa prestar atenção à prioridade. Esta é a solução para corrigir o problema woocommerce_login_redirect que não está funcionando.

Função de Logout do WordPress – wp_logout_url()

Esta função é responsável por criar a URL de logout no WordPress.

Ele ajuda desenvolvedores e usuários do WordPress a criar rapidamente um URL de logout que pode ser adicionado a um link ou botão e eu ilustrei neste artigo – como criar um URL de logout do WooCommerce .

O WooCommerce estende a funcionalidade ao ter os endpoints de URL que desempenham um papel crucial em ajudar desenvolvedores e usuários a criar a página de logout do WooCommerce sem qualquer codificação.

Se você deseja entender profundamente o processo de logout do WooCommerce e do WordPress, ajuda começar avaliando a função wp_logout_url() .

É uma função especial que você encontrará em vários temas e plugins do WordPress e é uma boa ideia ter um vislumbre do que está acontecendo nos bastidores.

O uso básico da função é o seguinte:

wp_logout_url( string $redirect = '' )

Como você pode ver, a função recebe um parâmetro que é uma string e a seguir estão os detalhes do parâmetro:

Parâmetro Descrição Exemplo(s) de uso
$redirect Este é um parâmetro de string e é opcional adicioná-lo, você pode deixá-lo em branco e a função funcionará.

No entanto, é útil no caso em que você deseja adicionar um URL de redirecionamento a uma página específica.

Então neste caso o parâmetro $redirect é a URL da página de redirecionamento, o destino onde todos os usuários que usam esta função neste contexto devem chegar.

Você também pode passar outras funções como parâmetros que retornam estritamente uma string, já que wp_logout_url() só aceita string como parâmetro.

Você pode usar esta função junto com um link da seguinte forma:

<a href="<?php echo wp_logout_url(); ?>">Logout</a>

Você pode usar esta função e passar outra função como parâmetro que retorna uma string da URL de redirecionamento da seguinte forma:

<a href="<?php echo wp_logout_url( home_url() ); ?>">Logout</a>

<a href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a>

Se você quiser entender melhor a função, é útil observar o código definido no núcleo do WordPress. Este código de função principal é o seguinte:

 function wp_logout_url( $redirect = '') {
    $args = array();
    if ( ! empty( $redirect ) ) {
        $args['redirect_to'] = urlencode( $redirect );
    }
 
    $logout_url = add_query_arg( $args, site_url( 'wp-login.php?action=logout', 'login' ) );
    $logout_url = wp_nonce_url( $logout_url, 'logout');
 
    /**
     * Filtra o URL de logout.
     *
     * @desde 2.8.0
     *
     * @param string $logout_url O URL de logout codificado em HTML.
     * @param string $redirect Caminho para redirecionar no logout.
     */
    return apply_filters( 'logout_url', $logout_url, $redirect );
}

Gancho de ação: wp_logout

Este é um gancho de ação que é acionado quando o usuário foi desconectado. Ele desempenha um papel importante na criação da funcionalidade de redirecionamento após o logout. O uso básico desta função é o seguinte:

do_action( 'wp_logout', int $user_id )

Como você pode ver, é necessário um parâmetro e os detalhes do parâmetro são os seguintes:

Parâmetro Descrição Exemplo(s) de uso
$user_id Este é o ID do usuário que foi desconectado. add_action('wp_logout','logout_redirect');

Nesse caso, nós o adicionamos como um gancho de ação e podemos passar nossa lógica de redirecionamento após o logout na função de retorno de chamada da seguinte maneira:

function logout_redirect(){

wp_redirect( home_url() );

exit;

}

Portanto, neste caso, estamos redirecionando o usuário após o logout para a página inicial.

Essas funções são úteis quando você deseja controlar o redirecionamento do usuário após o login ou o logout.

Gancho de filtro do WordPress logout_redirect

Outro hook de filtro que você pode usar para criar redirecionamento após o logout no WooCommerce é o Filter Hook logout_redirect. Este gancho de filtro funciona como a função wp_logout_url() ou o gancho de ação wp_logout.

É um filtro básico do WordPress projetado para ajudar na criação de redirecionamento do WordPress ou WooCommerce após o logout. Seu uso básico é o seguinte:

apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )

Como você pode ver, ele possui três parâmetros e o parâmetro pode ser descrito em detalhes da seguinte forma:

Parâmetro Descrição
$redirect_to Este é o URL de destino de redirecionamento e deve ser uma string, por exemplo, http://example.com
$requested_redirect_to Este é o URL de destino de redirecionamento solicitado que é passado como parâmetro e também deve ser uma string como o primeiro parâmetro.
$user Este é o objeto de usuário – objeto WP_User do usuário que foi desconectado.

Você pode criar um redirecionamento do WordPress baseado em filtro após o logout usando o logout_redirect da seguinte forma:

 add_filter( 'login_redirect', 'njengah_logout_redirect', 10, 3 );

function njengah_logout_redirect( $localização, $requisição, $usuário) {

  global $usuário;

if ( isset( $user->roles ) && is_array( $user->roles ) ) {

   if ( in_array( 'assinante', $user->roles ) ) {

       return home_url();

          } senão {

        return $redirect_to;

      }

    }

   Retorna;

}

Gancho de filtro do WordPress login_redirect

Também é importante ressaltar que existe um filtro semelhante para o login – login_redirect funciona da mesma forma que o filtro logout_redirect. Na verdade, o uso é semelhante e vem com 3 parâmetros e a expressão geral é a seguinte:

apply_filters( 'login_redirect', string $redirect_to, string $requested_redirect_to, WP_User|WP_Error $user )

The parameters are similar expect the last parameter that has two user object options as you will see in the detailed description below:

Parâmetro Descrição
$redirect_to This is the redirect destination URL and it must be a string, for example, http://example.com
$requested_redirect_to This is the requested redirect destination URL that is passed as a parameter and it must also be a string just like the first parameter.
$user This is the user object – WP_User object of the user who has been logged in if the login was successful but for unsuccessful login the WP_Error object is represented by this parameter

As you can see there are several ways you can use to create a WordPress or WooCommerce logout redirect.

In a quick summary we have highlighted the three most important hooks you should consider using for creating the redirect after logout. These hooks include:

  • Default WordPress logout_redirect – using filter to create redirect after logout
  • Action hook wp_logout – fired after the logout and thus can be used to create redirect.
  • WordPress logout function wp_logout_url() – WordPress default function that retrieves the logout URL and this can be useful in adding a redirect since it takes one parameter for the redirect path.

WooCommerce Multisite Redirect After Logout

When you are creating a redirect after logout in WooCommerce the wp_logout hook may fail to work when you have a multisite. In this case you need a little creativity to control how to create the WooCommerce redirect after logout.

In fact in a multisite set up WordPress logout function requires you to filter the allowed URLs for redirect and this can easily be executed using the allowed_redirect_hosts filter.

It helps to understand how this filter hook works so that you can use it in the WooCommerce multisite redirect after checkout. So let's briefly look at this filter.

Filter Hook: allowed_redirect_hosts

This is a filter hook that filters all the allowed hosts to apply redirect to. So in simple terms it checks the redirect URLs and vets them. The basic usage of this filter is as follows:

apply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )

As you can see in the expression above, it takes two parameter and they can be explained in details as follows:

Parâmetro Descrição Usage Example(s)
$hosts (string[]) This is simply an array with all the allowed host names add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

function njengah_allow_parent_redirect( $allowed ) {

$allowed[] = 'example.com'; // Multisite parent

return $allowed;

}

<a href="<?php echo wp_logout_url( 'http://example.com' ); ?>">Logout</a>

$host (string) This is the host name of the redirect destination.

This can be left empty.

You can add more hosts to the callback function and come up with code like this:

add_filter( 'allowed_redirect_hosts', 'njengah_allow_parent_redirect' );

function njengah_allow_parent_redirect( $allowed ) {
    $permitido = array(
    'blog.example.com',
    'codex.example.com',
     );
    return array_merge( $hosts, $allowed );
}

Isso simplesmente serve ao propósito de validar os URLs de redirecionamento permitidos, que é uma adição importante ao redirecionamento do WooCommerce multisites após o logout, pois na maioria dos casos o redirecionamento wp_logout padrão falhará sem a filtragem dos hosts de redirecionamento.

Função de redirecionamento do WordPress: redirecionamento wp_

Quando você está criando um redirecionamento no WooCommerce ou WordPress, como expliquei no post sobre como criar um redirecionamento após o checkout no WooCommerce, você precisa da função wp_redirect() .

Compreender o papel dessa função é crucial na criação do redirecionamento do WooCommerce após o checkout, pois é a função principal responsável por executar os redirecionamentos no WordPress e no WooCommerce. Vamos descrever brevemente como funciona e o parâmetro que leva. O uso geral da função wp_redirect() é o seguinte:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Como você pode ver, esta função recebe três parâmetros e eles podem ser descritos em detalhes da seguinte forma:

Parâmetro Descrição
$location Este é o caminho ou URL para onde redirecionar o usuário. Deve ser uma string e é necessário para que a função funcione.
$status Este é o código de status de resposta HTTP que deve ser aplicado a este redirecionamento e este é um número inteiro e é opcional usá-lo.
Por exemplo, você pode adicionar 301 para redirecionamento permanente ou pode deixá-lo como o valor padrão que é 302, o que significa movido temporariamente.
$x_redirect_by Este é o aplicativo que está fazendo o redirecionamento e, por padrão, é o WordPress e raramente deve ser desativado, pois estamos criando o redirecionamento do WooCommerce após o logout, que está dentro do contexto do WordPress.

Observação

É importante entender que quando você está usando a função wp_redirect(), a tit não sai sozinha. Portanto, é importante sempre adicionar exit após a função, pois a saída no PHP é usada para encerrar o script em execução atual após a execução da linha de código anterior. Portanto, a melhor maneira de usar a função wp_redirect é a seguinte:

 wp_redirect($url);

saída

Você também pode criar um redirecionamento condicional usando a função wp_redirect com a if statement da seguinte forma:

 if (wp_redirect($url)){

   saída;

}

Esta função pode ser usada junto com o hook template_redirect como no código abaixo:

 function njengah_wp_redirect_example() {

    if ( is_user_logged_in() && is_page( $id ) ){

        wp_redirect(get_permalink($id));

        saída;

    }

}

add_action( 'template_redirect', 'njengah_wp_redirect_example' );

Como você pode ver no código acima, ele pode receber uma função como parâmetro, desde que a função retorne uma string para o parâmetro $location, como é o caso da função get_permalink( )

Função de redirecionamento do WordPress: wp_safe_redirect()

A wp_safe_redirect() é a segunda função de redirecionamento do WordPress que pode ser útil para executar o redirecionamento do WooCommerce após o logout. Esta função funciona como a função wp_redirect() , mas tem uma verificação extra da URL de redirecionamento.

Na função wp_redirect, o parâmetro $location não é verificado, mas na função wp_safe_redirect() , o parâmetro $location é verificado para verificar se é um host permitido.

Essa é a diferença entre as duas funções de redirecionamento. O uso geral desta função de redirecionamento é semelhante ao do wp_redirect e a expressão geral é a seguinte:

wp_safe_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Como você pode ver os parâmetros são os mesmos:

Parâmetro Descrição
$location Este é o caminho ou URL para onde redirecionar o usuário. Deve ser uma string e é necessário para que a função funcione.
$status Este é o código de status de resposta HTTP que deve ser aplicado a este redirecionamento e este é um número inteiro e é opcional usá-lo.
Por exemplo, você pode adicionar 301 para redirecionamento permanente ou pode deixá-lo como o valor padrão que é 302, o que significa movido temporariamente.
$x_redirect_by Este é o aplicativo que está fazendo o redirecionamento e, por padrão, é o WordPress e raramente deve ser desativado, pois estamos criando o redirecionamento do WooCommerce após o logout, que está dentro do contexto do WordPress.

Esta função permite que os desenvolvedores de plugins definam ou removam a lista de hosts permitidos e se o host não estiver na lista de hosts permitidos, o redirecionamento falhará e o padrão será wp-admin.

Assim como a função wp_redirect , o wp_safe_redirect não sai automaticamente e também requer que você adicione exit como nos trechos de código abaixo:

 wp_safe_redirect( $url);

saída;

Você também pode usá-lo com instrução condicional como no exemplo anterior:

 if ( wp_safe_redirect( $ url ) ) {

    saída;

}

Conclusão

Neste post, descrevi as maneiras passo a passo de criar os vários redirecionamentos do WooCommerce após as opções de logout. Eu ilustrei com um exemplo de código como criar o logout de redirecionamento do WordPress ou WooCommerce usando a variedade de funções e ganchos disponíveis do núcleo do WordPress.

Em um resumo rápido para resumir o que abordamos; como criar redirecionamento após o logout para:

  • Redirecionamento de logout da página atual
  • Redirecionamento de logout da página anterior
  • Redirecionamento de logout da página inicial
  • Redirecionamento de logout de página específica
  • Redirecionamento de logout de URL externo

Espero que este guia seja um ótimo ponto de partida para criar o redirecionamento de logout no WooCommerce. Se você gostaria de compartilhar comentários ou contribuir para melhorar este guia e até mesmo apontar erros ou erros, sinta-se à vontade para entrar em contato comigo. Se você gosta deste guia, também pode conferir o outro guia que escrevi sobre como criar o redirecionamento do WooCommerce após a compra.

Artigos semelhantes

Melhores listas de plugins WooCommerce