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.

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

3

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.

Leave a Reply

Your email address will not be published. Required fields are marked *