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.
Key Features

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
Demo
Please visit the live demo to try it out.
Documentation
The documentation for this extension is here.
Download
This extension for WooCommerce is available on WooThemes WooCommerce Product Search extension.
Hi,
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?
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.
Cheers
Hello…
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.
Rob
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.
Cheers
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.
Hi,
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 thestock_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.
Cheers
Hi Kento,
Are you planning to make the URL a little more SEO-friendly? It’s very long for just a category.
For example, if i click Men -> Jackets the URL result is:
https://demo.itthinx.com/wps/?ixwpst%5Bproduct_cat%5D%5B%5D=33&title=1&excerpt=1&content=1&categories=1&attributes=1&tags=1&sku=1&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bshow%5D=all&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_color%5D%5Bshow%5D=all&ixwpsf%5Btaxonomy%5D%5Bpa_color%5D%5Bmultiple%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_color%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_size%5D%5Bshow%5D=all&ixwpsf%5Btaxonomy%5D%5Bpa_size%5D%5Bmultiple%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_size%5D%5Bfilter%5D=1
A lot of filters are included in the URL which IMO doesn’t need to be all visible since I never filtered them yet.
Thanks
Hi,
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, …).
Cheers
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.
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.
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.
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.
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?
Cheers
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.
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
Cheers
Sounds good. Thanks again for your help. Take care.
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?
Hi Robert, I would recommend to review the settings used on your site for the Indexer – see https://woocommerce.com/document/woocommerce-product-search/settings/index/ – you can increase the number of entries that are processed per run and also increase the processing limits for PHP while decreasing the work cycle. If you need further help, please make sure to Create a ticket so our support team can help you further.
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.
Hi,
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).
Cheers
The link you mentioned is redirecting me to https://woocommerce.com/document/subscriptions/develop/functions/
You need to go to the first link, you’re visiting the second one I mentioned is currently broken.
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?
https://nimb.ws/GUichm
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.
Cheers
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.
Hi John,
Thanks for asking, good question. This is something we could take into account as a feature request, taking note of it 🙂
Cheers
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/
Hi Christopher,
Thanks for using our software! Please create a support request here and our support team will help you further.
Cheers
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.
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.
Cheers
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?
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.
Hi! I would like to remove the “clear” text on sidebar filters, leaving only an x icon to clear the filter. Is this possible?
Hi Albin,
Please have a look at the Customization section of the documentation where you will find guidance and examples.
Cheers
Hi Kento,
Thanks! One more thing, is there a way to get shorter and tidier urls?
With only one filter active this is what my urls looks like;
https://domain.com?ixwpst%5Bpa_log%5D%5B%5D=62&title=1&excerpt=1&content=1&categories=1&attributes=1&tags=1&sku=1&ixwpsf%5Btaxonomy%5D%5Bproduct_tag%5D%5Bshow%5D=set&ixwpsf%5Btaxonomy%5D%5Bproduct_tag%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bproduct_tag%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_log%5D%5Bshow%5D=all&ixwpsf%5Btaxonomy%5D%5Bpa_log%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bpa_log%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bshow%5D=set&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bproduct_cat%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_resolution%5D%5Bshow%5D=set&ixwpsf%5Btaxonomy%5D%5Bpa_resolution%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bpa_resolution%5D%5Bfilter%5D=1&ixwpsf%5Btaxonomy%5D%5Bpa_framerate%5D%5Bshow%5D=set&ixwpsf%5Btaxonomy%5D%5Bpa_framerate%5D%5Bmultiple%5D=0&ixwpsf%5Btaxonomy%5D%5Bpa_framerate%5D%5Bfilter%5D=1
All the best,
Hi Albin,
The URLs are correct and based on the filters used, but your question is valid. Although the length of the URLs during filtering is not an issue (see for example searches on Amazon or Google which happily extend), I do see an interesting point about the option to shorten them. We’ll take note of it and see if there’s something interesting we could provide further on.
Cheers
Hello,
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.
Thanks.
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).
Cheers
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?
Hi,
The integration with WooCommerce Brands is automatic, please see Is it possible to search for custom fields or metadata, to find products by vendor, brand, manufacturer, part number … ? in the FAQ section of the documentation for further info.
Cheers
In version 2.17.0 search doesn’t show results when the searching term (SKU) contains a dash.
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.
Cheers
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?
Hi Ben,
We provide the API documentation here.
Cheers
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?
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.
Cheers
Hi,
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.
Hi Oscar,
Thanks, sure let’s have a look, I’ll get in touch.
Cheers
Great! That fixed it. Thanks.
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?
This is related to an optimization option that is incompatible with your theme’s templates – please see https://docs.woocommerce.com/document/woocommerce-product-search/faq/#section-12 on what to disable to solve it.