Make WooCommerce pages accessible for logged in users only

I have a website using WordPress, and an e-commerce using WooCommerce. I would like my shop (and all its pages) to be seen by logged in users only.

Via the User Access Manager plugin, I have denied access to the shop page, but with a direct link to a product etc. one can access that particular page nonetheless, even if the user is not logged in.

Read More

How can I redirect users, who are not logged in, to another page if they try to access a WooCommerce page?

Related posts

3 comments

  1. Put this in your functions.php file:

    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');
    

    What does it do?
    We check if a not-logged-in user wants to see a WooCommerce page, and redirect him/her to our home page.

  2. I just changed the redirection to

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

    so users are redirected on the “My-Account” page if not logged in or registered.

  3. I would change to this

    wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );
    

    instead of

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

Comments are closed.