Maybe because you have only one product category and therefore search engines would find duplicate content (Shop page = Category page) and penalize your website.
Or maybe because you use advanced product filters and you prefer customers to see the filtered view “by category” (e.g. “example.com/shop/?_product_category=tables“) as opposed to the default category pages ( “example.com/product_category/tables” ).
Either way, it is possible to programmatically redirect all product category pages to a given page or to a relevant URL with parameters – and here’s the fix. Enjoy!
Product categories come with their own page. But sometimes you may want to unindex + redirect these pages for SEO reasons. Here are two solutions to redirect all pages to the Shop page, or to a category-specific URL with parameters
PHP Snippet 1: Redirect All Product Category Pages to Shop Page
/** * @snippet Redirect To Shop @ WooCommerce Category Pages * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 7 * @donate $9 https://businessbloomer.com/bloomer-armada/ */ add_action( ‘wp’, ‘bbloomer_redirect_cats_to_shop’ ); function bbloomer_redirect_cats_to_shop() { if ( is_product_category() ) { wp_safe_redirect( wc_get_page_permalink( ‘shop’ ) ); exit; } }
PHP Snippet 2: Redirect Each Product Category Page to A Relevant URL With Parameters
/** * @snippet Redirect To URL + Parameters @ WooCommerce Category Pages * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 7 * @donate $9 https://businessbloomer.com/bloomer-armada/ */ add_action( ‘wp’, ‘bbloomer_redirect_cat_to_relevant_filter’ ); function bbloomer_redirect_cat_to_relevant_filter() { if ( is_product_category() ) { $term = get_queried_object(); $url = $term && $term->slug ? ‘/shop/?_product_category=’ . $term->slug : wc_get_page_permalink( ‘shop’ ); wp_safe_redirect( $url ); exit; } }
Where to add this snippet?
You can place PHP snippets at the bottom of your child theme functions.php file (delete “?>” if you have it there). CSS, on the other hand, goes in your child theme style.css file. Make sure you know what you are doing when editing such files – if you need more guidance, please take a look at my free video tutorial “Where to Place WooCommerce Customization?”
Does this snippet (still) work?
Please let me know in the comments if everything worked as expected. I would be happy to revise the snippet if you report otherwise (please provide screenshots). I have tested this code with Storefront theme, the WooCommerce version listed above and a WordPress-friendly hosting on PHP 7.3.
If you think this code saved you time & money, feel free to join 14,000+ WooCommerce Weekly subscribers for blog post updates or 250+ Business Bloomer supporters for 365 days of WooCommerce benefits. Thank you in advance 🙂
Need Help with WooCommerce?
Check out these free video tutorials. You can learn how to customize WooCommerce without unnecessary plugins, how to properly configure the WooCommerce plugin settings and even how to master WooCommerce troubleshooting in case of a bug!
Rodolfo Melogli
Business Bloomer Founder
Author, WooCommerce expert and WordCamp speaker, Rodolfo has worked as an independent WooCommerce freelancer since 2011. His goal is to help entrepreneurs and developers overcome their WooCommerce nightmares. Rodolfo loves travelling, chasing tennis & soccer balls and, of course, wood fired oven pizza.