skip to Main Content

I want to hide any category pages

and the main shop page

So I need to redirect from category links and shop page to the root of the website

I use the code below for this, but it does more or less the opposite. any advice?

add_action( 'template_redirect', 'redirect_to_shop');
function redirect_to_shop() {
    // Only on product category archive pages (redirect to shop)
    if ( is_product_category() ) {
        wp_redirect( wc_get_page_permalink( 'shop' ) );
        exit();
    }
}

2

Answers


  1. You can use is_shop() and home_url()

    So you get:

    function action_template_redirect() {
        /* is_product_category() - Returns true when viewing a product category archive.
         * is_shop() - Returns true when on the product archive page (shop).
         *
         * (redirect to home)
         */
        if ( is_product_category() || is_shop() ) {
            wp_safe_redirect( home_url() );
            exit;
        }
    }
    add_action( 'template_redirect', 'action_template_redirect' );
    
    Login or Signup to reply.
  2. Try this:

    add_action('template_redirect', 'wc_redirect_to_shop');
    function wc_redirect_to_shop() {
        // Only on product category archive pages (redirect to root)
        if (is_product_category()) {
            wp_redirect(get_site_url());
            exit();
        }
    
        /**
         * Redirect shop page to root
         * Second check prevent redirect loop when front page is the as same shop page
         */
        if (is_shop() && get_site_url(null, '/') != wc_get_page_permalink('shop')) {
            wp_redirect(get_site_url());
            exit();
        }
    }
    

    You can use the following functions:

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search