WooCommerce Product Search

Enhanced Product Search for WooCommerce

The WooCommerce Product Search extension brings Search Relevance and Instant Search Results to WooCommerce. The extension helps to improve and control the relevance of products in search results and adds facilities that supply instant results helping visitors to find products faster.

Instant Search Form

Key Features

Introducing Search Weights for WooCommerce

Introducing Search Weights for WooCommerce

  • Increase Sales with Relevant Results
  • Instant Search Results
  • Search Weights based on Keyword Matches
  • Product and Category Search Weights
  • Shortcodes, Widgets and Template API


Please visit the live demo to try it out.


The documentation for this extension is here.


This extension for WooCommerce is available on WooThemes WooCommerce Product Search extension.

192 Responses to WooCommerce Product Search

  1. Olivier Janssen March 13, 2023 at 12:02 pm #


    I purchased your product search plugin.
    I added the attribute filter to my homepage.
    When I’m logged into the site as admin it works fine. However when I visit the store as a regular visitor the dropdowns are “disabled”.
    Can’t seem to find the setting to make them active.
    Any suggestions?

    • Kento March 13, 2023 at 10:21 pm #

      Hi Olivier,

      You might have to adjust settings related to caching, it appears that your visitors are served a different version of the pages than your admin. Please Open a Support Request and our team will take it from there.


  2. Robert Henry September 20, 2022 at 8:17 pm #


    I am using the WooCommerce Product Search using the following shortcode; [woocommerce_product_search]

    I do not want the live search that causes live search results from the search field. How can I turn that functionality off?

    Please get back.


    • Kento September 21, 2022 at 10:24 am #

      Hi Rob,

      You can use a very large number with the delay parameter so that it takes long until the live search kicks in – the parameter is documented on the shortcode’s documentation page.

      If you need further help, please use the Support section where our team will be happy to help you further.


  3. Rck August 1, 2022 at 5:41 pm #

    Hello! I need the search results to show the products that are in stock first and then show the out of stock products.

    I would like to know if there is any snippet that I can use for this. Thank you very much.

    • Kento August 2, 2022 at 10:13 am #


      You could achieve this by using the pre_get_posts hook (it should fire late to allow others hooked on the action to do their thing before). WooCommerce has a lookup table $wpdb->wc_product_meta_lookup with the stock_status column that you could use to apply sorting before the results are presented.

      I’m not aware of any particular snippet I could point you to that would already to this for you, so you’d have to figure the code out yourself or hire a WooExpert to do the customization for you.


    • Kento March 24, 2022 at 8:35 pm #


      Thanks for asking! We don’t have current plans to change or shorten these in the short term, although there will be a revision related to overall improvements. In any case, the length of the URLs produced are not an issue for SEO or other aspects, as you can easily see with other sights that use really large URLs (ebay, google, amazon, …).


  4. ProServ March 18, 2022 at 1:43 pm #

    Oh, sorry for my last message…
    I’ve found my problem. I’ve openned a div and close it with form.
    Already work fine. You can delete my two post.

    • Kento March 24, 2022 at 1:14 pm #

      Thanks for following up and great to hear that you found the cause. Thanks for using the search engine!

      By the way, if you need help later on, please submit a ticket and our team will be happy to help you further.

  5. ProServ March 18, 2022 at 10:51 am #

    This extension is perfect and has a lot of features.
    There is only one problem with this, when select a filter, it duplicates the footer on the last find element (last li).
    You can try it : https://poc.aprocom.fr/categorie-produit/funeraire/

    I’ve tried with shortcode, function or sidebar.
    I don’t understand why footer is duplicate. I not use a theme (own theme) and all the HTML structure is propagated with WooCommerce.

  6. Katrina January 5, 2022 at 1:05 pm #

    Hello. Consider modifying your JS for updating the header element contents on the shop page when filtering. WooCommerce provides the filter hook ‘woocommerce_show_page_title’ inside of the header element in the archive-product.php file. This allows theme developers to turn off the title on the page altogether. I’ve done this for my theme and moved it to the page sidebar – my shop page has a two-column layout. But product-filter.js (line 302) targets and inserts the entire header element and shows it anyway. This results in the title displaying where it was previously disabled using the WooCommerce filter hook as well as my sidebar location and breaking the page layout. As additional filters are applied and cleared using the plugin, this behavior persists adding additional header elements with the page title that do not clear unless you navigate away from the page.

    • Kento January 14, 2022 at 7:06 pm #

      Hi Katrina,

      The system will update the header element where it is located. Could it be that in your case you have it in two positions? Do you have an example page where we could see what you are describing?


      • Katrina January 14, 2022 at 9:47 pm #

        Hello Kento,
        Thanks for taking time out of your busy schedule to reply.
        Technically, I do have it in two positions because I am not overwriting the archive-product template, only using the hooks provided.
        So I passed false to the woocommerce_show_page_title filter so that the title does not display, but the title’s header wrapper markup is still on the page. See the WooCommerce docs for reference here – https://woocommerce.github.io/code-reference/files/woocommerce-templates-archive-product.html#source-view.33. I did not set it’s selector to display none or anything, since I’m not using it to show anything.
        My theme has the page title in the left sidebar above the widgets. So I use the woocommerce_page_title function to get the page title and place it there. For consistency, I duplicated the woocommerce header element and place it inside there.

        I’m no jquery expert, but I believe the code started on line 302 of product-filter.js in your plugin, is replacing the html content of the header and showing the header regardless of it’s current state. Here’s the code:
        var header = $( data ).find( containers.header );
        if ( header.length > 0 ) {
        $( containers.header ).replaceWith( header );
        $( containers.header ).show();
        } else {
        $( containers.header ).html( ” );
        $( containers.header ).hide();
        This will be display the header even if I set it’s CSS to display none because header.length will always return greater than 0 unless the header element is not used or the template is completely overwritten.

        I’m unsure of how it works exactly, but in my theme it has been making duplicate copies of the header when the queries are run and on each subsequent page load where Product Search is actively running – to include if live filters are enabled or if the URL query string has changed. I would refresh the screen and new header markup would append to the page right beneath the previous one. The only way to clear the behavior is to browse away from the page and return.
        I would have submitted this ticket on WooCommerce’s website, but I’m in an isolated development environment. If you need additional information, please let me know and I’ll be happy to see if I can get some screenshots of the behavior.

        • Kento January 20, 2022 at 3:31 pm #

          Hi Katrina,

          You’re very welcome, these are indeed busy days but I hope that the following will be helpful.

          What you describe is in line with what I thought. My suggestion would be based on your correct observation:

          “… unless the header element is not used or the template is completely overwritten.”

          Indeed it would be appropriate to override the default template from your theme in a child theme where the superfluous header instance(s) are removed. You should end up with that header in only one place, as you originally intend to have it.

          So, my suggestion would be:

          – override archive-product.php in your child theme where the header section is removed
          – you won’t need to use the woocommerce_show_page_title filter
          – only leave the header in the template that applies to your sidebar


          • Katrina January 20, 2022 at 6:54 pm #

            Sounds good. Thanks again for your help. Take care.

  7. Robert Garcia November 27, 2021 at 3:52 pm #

    Is there any way to speed up indexing, we have 500k products, and it is taking several hours for just 1%. Is there a way to have several threads working at once?

  8. MSA November 18, 2021 at 12:39 pm #

    I want to use this plugin in oxygen builder. Oxygen builder don’t use widget. So we have to create a template where we can place the search fields. The plugin you are providing it allows to put those search fields by widget. So let me know the possibility.

    • Kento November 19, 2021 at 12:08 pm #


      You will find the equivalent functions documented currently under Functions (please note that the link should normally be pointing to this page but due to a restructuring of the documentation the other one is active).


      • MSA November 19, 2021 at 12:55 pm #

        The link you mentioned is redirecting me to https://woocommerce.com/document/subscriptions/develop/functions/

        • Kento November 19, 2021 at 1:05 pm #

          You need to go to the first link, you’re visiting the second one I mentioned is currently broken.

          • MSA December 1, 2021 at 11:42 am #

            Hi Kento,
            We have purchased the plugin and understood the shortcode feature. In the actual shop page I placed three shortcode using oxygen builder. In the left column I placed two shortcode [woocommerce_product_search], [woocommerce_product_filter_price] and in the right [woocommerce_product_filter_products].
            The content is coming like below and ajax search is not working. Any thing we are missing?

            • Kento December 1, 2021 at 11:57 am #

              Hi there!

              Thanks for using the search engine! I can’t say much based on the screenshot, maybe it’s related to caching or some conflict (your debug.log might reveal something). But please make sure to create a ticket here and our support team will help you further.


  9. John L January 28, 2021 at 1:01 pm #

    When you do a search for a variation sku you get redirected to the product page with no variations selected. Is there a way to have the variation selected as part of the search result?

    For example when you do a search for “men-bshirt-m-orange” on your demo site “http://demo.itthinx.com/wps/” you are redirected to this page “http://demo.itthinx.com/wps/product/button-down-shirt/”. With that same search is there a way to be redirected directly to the variation like here “http://demo.itthinx.com/wps/product/button-down-shirt/?attribute_pa_color=orange&attribute_pa_size=m”?

    This way if someone searches by the sku of a variation they get to the product with the variation(s) already selected.

    • Kento January 29, 2021 at 3:33 pm #

      Hi John,

      Thanks for asking, good question. This is something we could take into account as a feature request, taking note of it 🙂


  10. Christopher October 31, 2020 at 7:55 am #

    After updating the plugin to 3+ version from 2+ version some categories (those with 500+ products) not showing up any product (the index is on 100%).

    Here is an example: https://fithealth.gr/cat/organa-gimnastikis/mikroorgana/

    • Kento November 1, 2020 at 8:23 pm #

      Hi Christopher,

      Thanks for using our software! Please create a support request here and our support team will help you further.


  11. Zack September 16, 2020 at 5:27 am #

    Thanks for this awesome plugin. However, for some reason, it will stop styling my theme’s Woocommerce product search widget if I enabled “Optimize front end product searches”. Any help would be much appreciated.

    • Kento September 21, 2020 at 9:54 am #

      Hi Zack,

      Great to hear that you like it! Regarding the option, it’s not related to styles. But you’re probably using the auto-replacement search field or the widget. Please have a look at the Themes section of the documentation and particularly the Customization section for hints on styling the containers. If you still need help after that, please create a Support request.


  12. Albin August 21, 2020 at 11:52 pm #

    Hi! Is it possible to replace the “—” sign in the price filter widget with the text “to”? I’ve looked around in the plugin editor but can’t find where the “—” is generated from?

    • Kento September 4, 2020 at 9:50 pm #

      Hi Albin, thanks for using our search engine! There are several ways of customizing the output, but please don’t approach it by editing the plugin’s code, it’s the worst thing you can do. For this case, please have a look at the woocommerce_product_search_field_product_price_html filter which you can use with a simple string replacement.

  13. Albin August 13, 2020 at 10:10 am #

    Hi! I would like to remove the “clear” text on sidebar filters, leaving only an x icon to clear the filter. Is this possible?

  14. Oshin June 29, 2020 at 7:41 pm #


    This issue, with WooCommerce Price Based on Country, also applies to WC Booster (https://booster.io/features/woocommerce-prices-and-currencies-by-country/).

    The Product Search plugin has a static method get_min_max_price located in the WooCommerce_Product_Search_Service class.
    But the problem is that it does not provide a filter to override the values. Hence, even with the API and the available filters/hooks, the developers at Booster would not be able to override the queries required to modify the min and max prices to get Booster work with Product Search, especially regarding the Product Search price filter/slider.

    There is a filter on the native WooCommerce Price Filter called woocommerce_price_filter_sql that allows to filter the sql required to get the min and max values.

    Maybe, you can add such a filter in the next update. This will make it more accessible to developers and users, and get Product Search more compatible.


    • Kento June 30, 2020 at 11:25 pm #

      Hi Oshin,

      Thank you very much for your suggestion. I think it makes sense to have such a filter for that method and we will add it in an upcoming release (if possible, it might be included in the next upcoming one).


  15. Eduardo May 6, 2020 at 8:20 pm #

    Hello, I saw comments about the integration with Woocommerce brands, does this native integration already exist or need to be customized after purchasing the plugin?

  16. Christopher November 25, 2019 at 4:01 pm #

    In version 2.17.0 search doesn’t show results when the searching term (SKU) contains a dash.

    • Kento December 2, 2019 at 7:38 am #

      Hi Christopher,

      Searching for SKUs with a dash is supported as the search engine’s indexer is aware of those, but I would recommend to also update to the latest version and make sure that you don’t have any conflicting plugins or customizations in place. You might also try rebuilding the index.


  17. Ben October 5, 2019 at 12:22 pm #

    We have purchased this plugin and would like to be able to add a filter (similar to the categories widget) for a custom taxonomy – is this possible? Is there any developer level documentation that would cover this?

    • Kento October 8, 2019 at 8:32 pm #

      Hi Ben,

      We provide the API documentation here.


  18. Robin Scott August 5, 2019 at 10:57 am #

    Hi – looking into dropping support for WC Brands (https://docs.woocommerce.com/document/wc-brands/ ) into your plugin, to add this as a filter for use in widgets – it’s basically a custom taxonomy.

    Would you be interested in a PR (I am on private repo for this btw in Woo Github – where it says to contact you here!) – or is this something you could give a quick steer on?

    • Kento August 5, 2019 at 5:38 pm #

      Hi Robin,

      I have seen many cases where simply using a product attribute was covering the need to work with brands. That’s what I would recommend to try out first before deciding to tackle an enhancement. WooCommerce Product Search also adds support for icons on attribute terms which covers the typical case where you need to display brand icons within the filter.

      If that works out for you, you won’t need to code anything, but I’d of course be interested to see how you would approach integrating it with the Brands extension if you prefer to use that. There is some limited support for custom taxonomies already built into WooCommerce Product Search which might also be helpful.


  19. Oscar September 14, 2018 at 5:22 pm #

    I’m the developer of WooCommerce Price Based on Country plugin. A customer of mine has informed me of a compatibility issue between your plugin and Price Based on Country. After reading the plugin code and running several tests, I have found the problem and the solution.

    Unfortunately, I can not apply the solution. The solution should be applied on your plugin.

    If you’re interested in integrating the two plugins, please contact me.

    Thank you in advance.

    • Kento September 16, 2018 at 8:03 pm #

      Hi Oscar,

      Thanks, sure let’s have a look, I’ll get in touch.


  20. James September 13, 2018 at 9:40 am #

    Great! That fixed it. Thanks.

  21. James September 6, 2018 at 4:13 pm #

    I have words like Café Latte in my colour section. They load initially fine but then when the extension updates the search the name comes through as Café Latte. Can you look into this?

Leave a Reply

We use cookies to optimize your experience on our site and assume you're OK with that if you stay.
OK, hide this message.

Affiliates · Contact · Jobs · Terms & Conditions · Privacy Policy · Documentation · Downloads · Useful Plugins · My Account