The WooCommerce Product Search search engine and its tools are developed following the highest standards in Software Engineering. It is duly designed, developed and tested to work on a broad variety of setups, powering thousands of shops with huge amounts of products – Even so, given the vast variety of tools that can compose a particular deployment, things can go wrong. This section provides some pointers to what you can do to figure out what’s wrong, how to fix it and provide a powerful search experience for your customers.

Searching doesn’t find any products or only some ↑ Back to top

If the index is not fully completed, the search engine will only provide results from those products that have already been processed.

Check under WooCommerce > Settings > Search > Index whether the index has reached 100%. Also check the next question for possible reasons.

The indexer never completes processing all products, why could that be? ↑ Back to top

Scheduled tasks (cron) are not working correctly. ↑ Back to top

If you get indications under WooCommerce > Settings > Search > Index that scheduled tasks (cron) seem to be failing, there can be several reasons for this to happen. You have the option to run the indexer manually in that case by clicking the Run button, or try to apply one of the solutions suggested below. Normally, the indexer only needs to process existing products initially so that they are included in searches  – after you have installed and activated the extension, any new products or modified products will be indexed instantly.

Please note that the indicator WordPress cron found under WooCommerce > Status > WordPress environment does not guarantee that scheduled tasks are working correctly, as it merely reflects whether the constant DISABLE_WP_CRON is used or not.

Your site has little or no traffic. ↑ Back to top

On low traffic sites, staging sites or sites that are running on localhost (your own computer), scheduled tasks (cron) are only triggered sporadically and in some cases not at all. Consider enabling scheduled tasks at the system level – see Hooking WP-Cron Into the System Task Scheduler on how to achieve this.

If you are using Docker, this article has indications on how to trigger WordPress cron every minute.

Or simply trigger the indexer manually by clicking the Run button.

Password-protected sites. ↑ Back to top

Access to your site is protected by password on the server level and scheduled tasks (cron) fail to execute due to lack of permission when the server receives the wp-cron request. Remove the password protection during tests or trigger cron events manually using the Run button.

The PHP memory limit is exhausted. ↑ Back to top

Increase the PHP memory limit as indicated in the article Increasing the WordPress Memory Limit.

There are issues during processing. ↑ Back to top

Errors in third-party plugins, themes or customizations cause issues during processing and thus the indexer cannot successfully process the entries. Disable plugins that are up-to-date but create issues. Update plugins that have not been updated in a while. Fix errors in customizations. Switch to a theme that is error-free. Plugins, themes and customizations should not produce any entries in the debug log. If they do, consider alternatives or fixing them.

Please check the next question on how to enable debugging and review the debug log entries produced for errors.

How can I enable extension-specific debugging? ↑ Back to top

In your site’s wp-config.php (this file is located in the root folder of your site) enable WordPress debugging and specific debugging for the extension by adding these lines:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WPS_DEBUG', true );

This will log any PHP notices, warnings and errors to the log file along with information about activies and events related to the search engine. The log file typically resides in wp-content/debug.log.

For additional debugging options, please refer to this extension’s Debugging section of the API documentation.

How to Test for Plugin and Theme Conflicts ↑ Back to top

Issues are often caused by incompatible themes, conflicting plugins, incompatible customizations or even syntax errors in source files (the latter are most often found in badly coded templates or customizations).

To find out what exactly is causing issues that stop the search engine and its features from working, please read the section How to Test for Plugin and Theme Conflicts where steps to discover the causes of conflicts are detailed.

Product images are missing ↑ Back to top

When you use live filters and the product images of the results are missing, then this is most likely due to a lazy loading implementation that is not compatible. Most lazy loading is coded in a way that is incompatible with image elements that are added dynamically on a page, and thus they fail to pull in the images after the live filter has found its matches. The recommended solution when this happens is to simply disable lazy loading of images.

General Plugin and Theme Compatibility ↑ Back to top

Where live filters are used, lazy loading provides no advantage as the products and their images are already loaded dynamically, according to the visitors choices. For those implementations of lazy loading that are actually compatible with dynamically built pages, there should be no issues though.

As of version 2.10.0, the search engine extension provides an API action that allows plugins and themes to be compatible with its live filters to selectively disable lazy loading. Plugins and themes that wish to be compatible, should listen to the woocommerce_product_search_signal_filter_response action and disable their lazy loading features during the request when this action is invoked.

Jetpack ↑ Back to top

Lazy Loading for images provided via Jetpack is fully compatible with WooCommerce Product Search as of version 2.10.0. If you are using a previous version, please update. Jetpack’s lazy loading for images can be turned on or off under Jetpack > Settings > Performance & speed using the option Enable lazy-loading for images.

Showing the lazy loading option in Jetpack
Jetpack’s lazy loading for images is compatible with WooCommerce Product Search’s live filters.

The7 ↑ Back to top

This theme provides a lazy loading option which should be disabled.

The7 > Theme Options > Advanced > Performance > Images lazy loading

Under Theme Options > Advanced > Performance, disable the option Images lazy loading.

Strange characters or corrupted output ↑ Back to top

In some cases it might be necessary to turn off accurate optimization when live filters are used. You will recognize that when you see strange characters in your product titles or descriptions after a live filter has been applied. Also when the output is corrupted (odd formatting), this might also be related to accurate optimization.

To solve this, go to WooCommerce > Settings > Search > General and disable the option “Use accurate optimization”. Save and try to apply a live filter. If there are further problems with the output, also disable the option “Optimize responses for filter requests”. Further details on these options are on the General settings documentation page.

Product attribute links don’t work as expected ↑ Back to top

The live attribute filters from the Product Filter – Attributes widget, the [woocommerce_product_filter_attribute] shortcode or the woocommerce_product_filter_attribute() function will produce links to product attribute archives when the style used is List or Inline.

When you try to visit these links and do not get the expected results, i.e. an archive page showing products that have the desired attribute, then you must enable archives for the product attribute in question.

To enable archives for a product attribute, go to WooCommerce > Attributes, edit the desired attribute and check the option Enable archives? – then go to Settings > Permalinks and click the Save Changes button.

The filters do not update the products displayed ↑ Back to top

It is important that the template used to display products (shop page template, product archive template) applies the appropriate CSS classes to the containers:

  1. The container of the products shown on a shop page or product archive must have the .products CSS class applied. An alternative class can be specified using widget settings or parameters passed to the shortcode or API function, but we recommend to use the default class for consistency.
  2. The container for individual products displayed on the shop page or a product archive must have the .product CSS class applied. As with the above, there are settings that allow to specify an alternative although we also recommend to use the default again.

For the settings mentioned, please refer to the Product Filter – Search widget, the [woocommerce_product_filter] shortcode or its equivalent API function.

Indicative of these issues are the following browser console messages that would be displayed if the system cannot locate the corresponding containers:

  • Could not find the general Products Container, expected the selector .products
  • Could not find the individual Product Container, expected the selector .product

The filters show duplicate translated terms with WPML ↑ Back to top

If you get duplicate entries from translated terms in your live filters, from the Product Filter – Categories widget, the Product Filter – Attributes or their shortcode equivalents, then you must enable the following option in WPML:

Go to WPML > Languages > Make themes work multilingual and enable the option Adjust IDs for multilingual functionality.

Combinations of filters are not applied ↑ Back to top

When you use the Product Filter – Search widget or the [woocommerce_product_filter] shortcode together with our live filter Widgets or Shortcodes, the widget’s option Update the Address Bar must be enabled / the shortcode’s update_address_bar attribute must be left at its default or set to "yes".

Clicking the search button or hitting Enter leads to no products found ↑ Back to top

When you use the Product Filter – Search widget make sure that the option Update the Address Bar is enabled. When you use the [woocommerce_product_filter] shortcode, do not specify the update_address_bar attribute or set it to "yes".

I have another question … ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Get in touch with the developer via the Help Desk.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top