Tornar as páginas do WooCommerce acessíveis apenas para usuários logados

12

Eu tenho um site usando WordPress e um comércio eletrônico usando WooCommerce. Gostaria que minha loja (e todas as suas páginas) fossem vistas apenas por usuários logados.

Por meio do plug-in do Gerenciador de acesso do usuário , neguei o acesso à página da loja, mas com um link direto para um produto etc., é possível acessar essa página específica, mesmo que o usuário não esteja logado.

Como redirecionar usuários, que não estão conectados, para outra página, se tentarem acessar uma página do WooCommerce?

Alessandro
fonte

Respostas:

24

Coloque isso no seu functions.phparquivo:

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

O que isso faz?
Verificamos se um usuário não conectado quer ver uma página do WooCommerce e o redirecionamos para nossa página inicial.

tfrommen
fonte
Obrigado pela ajuda. O arquivo functions.php está na minha pasta de temas? E como posso recuperar essa função na página do produto? Obrigado :-)
Alessandro
Muito obrigado. Seu código funciona bem para mim. Muitos muitos agradecimentos :)
Alessandro
1
Certifique-se de não definir nenhuma das páginas de woocommerce como sua página inicial, porque o site não funcionará mais.
SPRBRN
7

Acabei de alterar o redirecionamento para

wp_redirect( site_url('my-account/') )

para que os usuários sejam redirecionados na página "Minha conta" se não estiverem logados ou registrados.

Pierre
fonte
2
Este não é o melhor método para redirecionar para a My Accountpágina. É melhor recuperar o link permanente da página Minha Conta que você vinculou nas configurações do WooCommerce. Dessa forma, sempre que o link permanente for alterado ou você tiver um site multilíngue em execução, o link permanente ainda será recuperado corretamente. Resumindo: é melhor não codificar permalinks / slugs (ou URLs em geral). Um método melhor seria:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann
você codifica faltando; que terminam
user889030
0

Eu mudaria para isso

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

ao invés de

wp_redirect( site_url('my-account/') );
Ilias Benetos
fonte
2
Você poderia explicar por que isso ajudará, para que outras pessoas possam aprender algo com sua resposta?
Krzysiek Dróżdż