WooCommerce: Product Category Filter @ Shop Page

There is already a widget that allows you to place a “Product Category Dropdown” in your sidebar areas. The problem is that lately, sidebars have become kinda 1990. So, what if you want to place a “Category Select Box” anywhere in your WooCommerce website, and (in this case study), exactly on the Product Category pages, so that you can switch from one category to the other?

Well, in this snippet you will learn a lot of things. For example, the wc_product_dropdown_categories() function magically displays a category dropdown, while the wc_enqueue_js() function allows you to inject jQuery (responsible to trigger the category page redirect).

Here’s my “Product Category Switcher” in action on the Product Category pages. As soon as a different category is selected, a redirect take place.

PHP Snippet: Show a Product Category Switcher and Redirect Upon Selection

Please note in the “location.href” section you have to make sure you enter the correct permalink base for product categories, otherwise you will get error 404. In this case, I’m using the default product category permalinks, “/product-category/“.

/**
 * @snippet       Product Category Switcher @ Product Category Pages
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 8
 * @community     https://businessbloomer.com/club/
 */

add_action( 'woocommerce_before_shop_loop', 'bbloomer_filter_by_tag', 31 );

function bbloomer_filter_by_tag() {		
	if ( is_product_category() ) {		
		wc_product_dropdown_categories();	
	} 
	wc_enqueue_js( "
		$('#product_cat').change(function () {
			location.href = '/product-category/' + $(this).val();
		});
	" );
}

Where to add custom code?

You should place custom PHP in functions.php and custom CSS in style.css of your child theme: where to place WooCommerce customization?

This code still works, unless you report otherwise. To exclude conflicts, temporarily switch to the Storefront theme, disable all plugins except WooCommerce, and test the snippet again: WooCommerce troubleshooting 101

Related content

  • WooCommerce: Add Second Description @ Product Category Pages
    In terms of SEO, if you’re trying to rank your product category pages, you really need to make the most of the default WooCommerce product category “description” and “thumbnail”. Most themes, if compatible with WooCommerce, will show this content right below the product category name and above products. Nothing new so far. But what if […]
  • WooCommerce: Show Category For Each Product @ Shop Page
    A client of mine has a category called “Brand”. Each product is assigned to a specific Brand subcategory e.g. Nike, Adidas, etc. The goal of this task was to show the “Brand” subcategories in the shop/category/loop pages as a way to help the user identify the brand name. The same can be applied to showing […]
  • WooCommerce: Change Product Permalinks @ Shop / Loop Pages
    A BloomerArmada fan asked me a very interesting question: how can I link each product in the shop page to its own custom landing page as opposed to the default permalink? Of course this applies when you don’t want to use the default single product page for all or some products. Clearly, you could set […]
  • Bellini WooCommerce Product CategoriesWooCommerce: How To Display Categories on Any Page
    Categorizing products is a great a way to de-clutter your WooCommerce shop and intuitively guide users to the page they are looking for. In WooCommerce you can easily group your similar products under a category, making it easy for users to scan and find the products. For Example, if you sell T-shirts, Shirts, Pants, and […]
  • WooCommerce: Hide Categories From Product Cat Widget
    A client asked me to customize the Product Categories Widget that comes included with WooCommerce. In this case, they wanted to show ALL categories but the current one (when looking at a category page of course). You can also use this tutorial to hide certain category IDs from the widget, or maybe “all product category […]

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. Follow @rmelogli

19 thoughts on “WooCommerce: Product Category Filter @ Shop Page

  1. If you get 404 when selecting the “select category” from drop-down try this it will also show on shop page as well

    add_action( 'woocommerce_before_shop_loop', 'bbloomer_filter_by_tag', 31 );
     
    function bbloomer_filter_by_tag() {      
       if ( is_product_category() || is_shop() ) {      
          wc_product_dropdown_categories();   
       } 
       wc_enqueue_js( "
          $('#product_cat').change(function () {
    	  	 if($(this).val() != ''){
    		 location.href = '/product-category/' + $(this).val();
    		 }
             else{
    		 location.href = '/shop/'
    		 }
          });
       " );
    }
    
  2. What a great source for Woocommerce tweaks! However i can’t seem to fix the category selector on my page(?)

    also the No products were found matching your selection snippet aint working for me.
    Any idea what i might overlook?

    regards

    1. Hey there, thanks so much for your comment! I’m afraid this is custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  3. Hi rodolf, I am following your bl9g since a while and commenting first time. A lot of things about woocommerce i found here. Thank you.

    Could you please mail me your ebook if have?

    1. Thanks Manish

  4. Hi Rodolfo,

    if I only want to display the subcategories of the specific category as a dropdown, what would I need to change?

    Thanks!
    Lykke

    1. Hey Lykke, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

      1. Yes, I need this too! Lykke did you find plugin?

        Rodolfo you provide an amazing resource!

  5. Hi i am trying to use this code for oceanwp theme but its not working. I am trying to display in shop page

    1. Does it work on 2020 or Storefront theme? If yes, you need to adapt it to OceanWP

  6. I want to change URL after selection of Dropdown Because i am selecting Sub Category So URL cannot be Form like
    Siteurl/Category/Subcategory

    1. Hi Vishven, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  7. Hi Rodolfo,

    Thank you for this snippet!

    May I know how to add a little space in front of it please?

    See: https://d.pr/free/i/dEgpdx

    1. Sorry, no. But you can just use simple CSS margin

  8. Hello
    Great idea. I found one problem though. It does not work in my mobile. Also Is there a shortcode to add it wherever you want ? for example this should be in the home page too (in my case) that is not the shop page
    Yiannis

    1. Hey Yiannis, thanks for your feedback! Maybe you have JavaScript disabled on mobile? Otherwise try to clear its cache. The shortcode, yes, it’s possible, but it’s custom code I’m afraid. Thanks!

      1. Hello
        I don’t have js disabled in my mobile and I open the page as private in iPhone which means that there is no cache !! I still cannot see the menu in the mobile

        1. Disable all plugins but Woo and switch theme temporarily. Does it work?

Questions? Feedback? Customization? Leave your comment now!
_____

If you are writing code, please wrap it like so: [php]code_here[/php]. Failure to complying with this, as well as going off topic or not using the English language will result in comment disapproval. You should expect a reply in about 2 weeks - this is a popular blog but I need to get paid work done first. Please consider joining the Business Bloomer Club to get quick WooCommerce support. Thank you!

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