*** WooCommerce Product Search ***

2019.02.25 - version 2.12.2
* WordPress 5.1 compatibility tested.
* WooCommerce compatibility tested.
* Fixes an issue introduced with WC 3.5.5 https://github.com/woocommerce/woocommerce/pull/22573/files where saving settings had no effect.

2019.01.11 - version 2.12.1
* Fixed an issue where a page containing blocks with filter shortcodes would show an error about failing to publish or update.
* Fixed wrong price filter limits when searching first and then applying price filters (a side-effect of incorrect parameter handling).
* Fixed an issue with the filter reset producing an invalid URL due to excessive escaping.
* Updated the price filter to use common price decimals and adjust the price range limits as floor and ceiling values.
* Added the woocommerce_product_search_filter_price_decimals filter that allows to modify the price filter decimals used.
* Added the woocommerce_product_search_service_min_max_price_adjust_decimals filter.
* Added the woocommerce_product_search_service_min_max_price_adjust_for_display_decimals filter.
* Improved performance and fixed results by removing redundant meta query related to price filter when our price filter is requested.

2018.12.07 - version 2.12.0
* Tested with the latest WooCommerce and WordPress, including the new WordPress 5 Blocks editor (Gutenberg).
* Revised and tested for compatibility with Gutenberg and other page builders.
* Fixed initial values of the price filter were not set appropriately when used in content (with page builder blocks and shortcodes).
* Improved price filtering so store prices without taxes and products displaying prices with taxes included are consistent.
* Removed deprecated auto adjust settings.
* Fixed missing lower bounds on price slider calculations resulting in NaN values.
* Fixed an issue when optimizing back end searches is disabled, the specialized product store would provide all products instead of matches only.

2018.11.18 - version 2.11.0
* WordPress 5 compatibility checked.
* Improved the Product Search Field structure making it more resilient and easily fitting in with themes.
* Fixed number of terms not being taken into account to limit product categories or product attributes.
* Improved the Queries report to show the initial sorting-indicator.
* The Product Search Field will try to maintain the chosen order when the search page is requested (Enter/more link).
* Added an option to the Product Search Field to allow for open order.
* Improved product tag counts: related product counts are adjusted based on the current filter context instead of showing the overall count.
* Improved the performance on handling taxonomy term counts.
* Fixed price slider handles not positioned according to mapping when values are updated via filter context.

2018.10.02 - version 2.10.0
* Added Jetpack compatibility with lazy image loading so it does not need to be disabled anymore.
* Added the woocommerce_product_search_signal_filter_response action to signal filter response handling.
* Checked WooCommerce 3.5 compatibility.
* Added the woocommerce_product_search_compat filter.
* Fixed issues with white space removal in accurate filter response optimization.
* Improved compacting with accurate filter response optimization.
* Using only simple filter response optimization by default to assure higher compatibility rate.

2018.09.25 - version 2.9.0
* New feature added - flexible dropdowns as style options for category and attribute filters.
* New feature added - create custom shop sections with preselected product categories, tags or attributes.
* New feature added - use context to create customized shop pages showing products from certain categories, tags, attributes etc. only.
* Improved options and debugging info for theme compatibility.
* Added Storefront compatibility features so the handheld footer brings handles the search field and live results correctly.
* Fixed an issue with incorrect parameters submitted to filter request when empty multiple select was used.
* Added the woocommerce_product_search_selectize_css filter.
* Added the woocommerce_product_search_term_node_select_padding_step filter.
* Fixed term counts were not taking all subterms into account.
* Added the woocommerce_product_search_term_node_select_render_count filter.
* Improved the logic when several instances of the same filter are present to use some single key factors from the triggering element only.
* Fixed an issue where updating URL query args was not removing all previous parameter pairs.
* Fixed loading (progress) indicator gone when launching multiple filter requests.
* Added taxonomy, term and taxonomy_op to the available attributes the woocommerce_product_filter_products shortcode and the corresponding API function.
* Added the [woocommerce_product_search_filter_context] shortcode.
* Improved empty selects and dropdowns so they/their widgets are automatically toggled.
* Added individual options to toggle widgets and components when no eligible options are present in category, attribute and tag filters.
* Added a console warning when the general products container is not found.
* Added a console warning when the individual product containers are not found.
* Added the option to set the individual product container selector.
* Improved search handling for languages like Chinese.
* Fixed cases where queries on custom post types with a product taxonomy query part were filtered by mistake.

2018.08.24 - version 2.8.0
* Substantial performance improvements related to queries with large sets of products and terms.
* Fixed calculating product counts for terms with items that are out of stock.
* Improved hierarchical product counts to include counts from children.
* Improved performance on handling terms.
* Fixed redundant queries related to hit recording.
* Modified slider limit indicators to adjust to available range in context.

2018.08.19 - version 2.7.0
* Enhanced indexing to include product variations specifically.
* Fixed variations not included when optimizing JSON searches.
* Fixed missing index update for private products when saved.
* Minor improvements on back end descriptions.

2018.08.16 - version 2.6.0
* Considerably improves the accuracy and performance of large product set searches on the back end when enabled.
* Added options to handle JSON product searches; introduced substantial performance improvements for those.
* Added the woocommerce_product_search_ext_product_data_store filter.
* Improvement to also index products with private post status so they can be included in back end search results.
* Added the WPS_EXT_PDS constant that enables the PDS override.

2018.07.30 - version 2.5.0
* Added the Spanish translation.
* Corrected some errors in descriptions.
* Fixed an issue that made the [woocommerce_product_filter_reset] shortcode inaccessible.
* Fixed translations were not loaded in time for widgets on the back end.
* Fixed incorrect img attributes generated for product tag filter thumbnails.

2018.07.24 - version 2.4.0
* Added an interactive price slider to the price filter (supported by widget, shortcode and API function).
* Added options to display the price filter with slider and/or input fields.
* Fixed and improved overlapping request handling for live search and filter actions.
* Added filter reset widget, shortcode and API functions.
* Improved UX using page cursor progress indicator while filter requests are loading.
* Improved handling of filter requests in case of request error to bring the UI elements back to a consistent state.
* Fixed indicating the parent term for the product category filter had no effect.
* Fixed the indexer's memory limit check when the configuration option is set to unlimited or doesn't exist.
* Improved initial default work cycle so it won't exceed the idle cycle by default and also checks max_input_time.
* Added check for max_input_time during indexing.
* Added the woocommerce_product_search_indexer_limit filter.
* Added the woocommerce_product_search_indexer_check_memory_limit filter.
* Added the woocommerce_product_search_indexer_check_execution_limit filter.
* Suppressed warnings from empty indexing requests (e.g. when a product has no related tags).
* Fixed back end search to include out of stock products and those that are in draft or pending.
* Fixed an issue when "Enable AJAX add to cart buttons on archives" was disabled, clicking the button from within live results would lead to a blank page showing 0.
* Added the option to render the product category filters as select/dropdown.
* Added the option to render the product attribute filters as select/dropdown.
* Added the woocommerce_product_search_term_node_select_apply_padding filter.
* Added the woocommerce_product_search_term_node_select_padding_string filter.
* Added the woocommerce_product_search_term_node_select_padding filter.

2018.06.12 - version 2.3.0
* Fixed search results were not obtained for words containing some graphemes (like e.g. "æ") that expand to multiple characters in the index.
* Added additional information on context in the log when the content to clean is not a string.
* Improved the indexer to include potential additional content rendered through shortcodes in the descriptions.
* Fixed shortcodes appearing in descriptions produced for live search field results.
* Added cron check in the indexing section.
* Added the possibility to run indexing manually through the "Run" button.
* Fixed context resolution for terms should be limited to concerned product taxonomies only.

2018.05.28 - version 2.2.3
* Added parameters to the live search field form to handle more restrictive requests.
* Fixed and updated the more link generated for the live search field to allot to enable or disable any parameters.
* Added the condition to also act when searching along with filter search when processing the query, avoids showing all results when none should be included for search outside of filtering.
* Fixed the live search filter form so it also includes the title, excerpt, content and sku flags to allow for more restrictive search.
* Improved acting on missing resources to reenable filter fields to have at least minimal functionality.
* Added missing filter flags on ordering form update.
* Fixed sorting with multiple filter attributes would only use one attribute.
* Fixed a syntax error in variable initialization of the ixwpsf.attributeFilterItemOnClick function.
* Fixed cleaning up ampersands in product filter URL handling.

2018.05.18 - version 2.2.2
* Fixed product category order by Term order had no effect.
* Fixed product attribute order by Term order had no effect.
* Improved term product counts to reflect current filtering context.
* Added the woocommerce_product_search_get_terms_filter_counts filter.
* Added the woocommerce_product_search_term_walker_apply_get_term_count filter.

2018.05.14 - version 2.2.1
* Fixed product category filter expansion not always behaving properly on touch enabled devices.
* Fixed cycling between expanded and retracting on hover in the product category filter in certain conditions.

2018.05.11 - version 2.2.0
* This release contains very important performance improvements thanks to the use of a more optimal query structure.
* Solved issues where long queries would result in stalling the database engine due to the query optimizer producing suboptimal results.
* Added the missing parameter to the woocommerce_product_filter_products() API function.
* Fixed duplicate filter name, added the woocommerce_product_search_field_more_anchor_title filter.
* Fixed a typo in the class reference for the MIN_DELAY constant in the search field, filter field and old shortcode.
* Fixed missing and incomplete code documentation.
* Fixed the product filter when it would not be applied without also filtering terms.
* Fixed the product filters affecting other parts outside of the extension as this might not be desired by default in all setups.
* Added an option to apply product filters more extensively (disabled by default).

2018.05.08 - version 2.1.2
* Improved adaptive category filtering to reduce the terms offered when taxonomy pages are requested directly.
* Fixed the filter removal invocation for the terms_clauses filter.
* Fixed an issue where menu items would not be shown when accessing a filter-based URL.
* Fixed a PHP Notice when no results are matching for filters but no search terms were provided.
* Fixed price range filter was not activated due to missing flag in the filter request URL when a category was chosen after setting the price range.
* Added the woocommerce_product_search_request_search_query filter.
* Extended the term count adjustments to product attributes.
* Renamed the get_terms_for_request() method to the more appropriate get_product_categories_for_request() (in the service class).

2018.04.26 - version 2.1.1
* Added the Woo header tag.

2018.04.18 - version 2.1.0
* Improved the product filter navigation and UX.
* Improved term handling internally.
* Added product category navigation facilities compatible with click and touch devices, including auto-expand and retract and click to expand/retract.
* Added visual improvements on all product filters.
* Added Font Awesome 5 Free for term navigation icons.
* Disabled product category filter parent navigation display by default in favor of ancestor navigation which is enabled by default (both can be combined).
* Added guards for cases where conflicts are created by poor "optimizers" or where plain Javascript errors are causing required resources (our typeWatch) not to be loaded.
* Added the woocommerce_product_search_term_walker_expand filter.
* Added the woocommerce_product_search_term_walker_retract filter.
* Improved the term filter algorithm to further restrict terms offered based on matching products from the keyword search filter.
* Removed the previous taxonomy renderer.
* Fixed an issue where applying filters with pagination would lead to 404 responses if the filter would produce less pages than the n-th page viewed.
* Fixed wrong form id produced for price filter form.
* Added the WPS_DEBUG_DOM constant which enables logging of DOM parsing errors.

2018.04.01 - version 2.0.4
* Improved handling multiple instances of category filters; restricted terms offered to eligible terms within include and chosen context.
* Improved handling multiple instances of attribute filters as with category filters.
* Improved container IDs of live filters and live search.
* Added internal guards for string values on filter parameters.
* Fixes an issue where filters would be rendered multiple times in particular circumstances.
* Added the woocommerce_product_search_like_within filter.
* Fixed cross-filtering introducing unwanted terms on restricted filter terms with include.
* Updated the minimum WordPress version requirement to 4.6.
* Added the taxonomy renderer.
* Improved the adaptive term filter to take explicit inclusions into account.

2018.03.26 - version 2.0.3
* Fixed an issue where an optimization flag was propagated to pagination URLs causing scripts and styles to be removed.
* Fixed selected depth not correctly displayed on Product Filter – Categories widget.
* Improved the categories product filter to be adaptive on product category pages.

2018.03.09 - version 2.0.2
* Guarded the indexing process from failing due to invalid taxonomies.
* Fixed an issue with no results displayed in the product search field when no categories are shown.
* Fixed an issue with category thumbnail and product filter images clashing.

2018.03.08 - version 2.0.1
* Fixed a fatal error with installations using WordPress before 4.9.0 due to a missing core API function.

2018.03.05 - version 2.0.0
* This major release requires WooCommerce 3.x to use new features while maintaining backwards-compatibility with WooCommerce 2.6 where these are not available.
* All new improvements and features listed below for this version __require__ WooCommerce 3.x.
* Added full support to use the search engine for all front and back end product searches.
* Automatically powers front and back end searches for products and added related options.
* Automatically replaces front end product search field where possible.
* Added the product indexer.
* Added search statistics.
* Added the report on Searches.
* Added the report on Search Queries.
* Added the Welcome section with useful information and links.
* Added the notice inviting to rate the extension.
* Added the Assistant to set up filter widgets.
* Added the Index section in settings.
* Updated the Thumbnails section in settings with additional thumbnail settings for product taxonomies.
* Updated the Weights section with additional settings.
* Removed the performance section in settings.
* Added live product filter facilities available through widgets, shortcodes and the extension's API.
* Added the Product Filter widget.
* Added the Product Category Filter widget.
* Added the Product Tag Filter widget.
* Added the Product Attribute Filter widget.
* Added the Price Filter widget.
* Added the [woocommerce_product_filter] shortcode.
* Added the [woocommerce_product_filter_products] shortcode.
* Added the [woocommerce_product_filter_attribute] shortcode.
* Added the [woocommerce_product_filter_category] shortcode.
* Added the [woocommerce_product_filter_tag] shortcode.
* Added the [woocommerce_product_filter_price] shortcode.
* Added product search filter image support for product categories, tags and attributes.
* Added new options to shorten titles and description for results in the search field.
* Added data deletion option.
* Replaced the "WooCommerce Instant Product Search" widget with the improved "Product Search Field" widget that offers additional options and much better default settings.
* Replaced use of language domain constant WOO_PS_PLUGIN_DOMAIN with string literal 'woocommerce-product-search' (*sigh*).
* Removed support for like_escape().
* Added WooCommerce version compatibility and tested up to tags.
* Removed the woocommerce_product_search_use_admin_ajax filter and product-search.php alternative.
* Optimized scripts.
* Added performance improvements with added minified scripts and styles.
* Updated the translation template.
* Updated the built-in styles for better appearance and theme-compatibility.
* Several minor fixes and improvements.

2017.09.09 - version 1.10.3
* Updated the product panel icon.

2017.07.25 - version 1.10.2
* Fixed our taxonomy query to exclude products that are out of stock and products excluded from search.

2017.06.23 - version 1.10.1
* Adjusted the fulltext search to exclude query words that are shorter than ft_min_word_len.
* Fixed an error that could occur in some instance (depending on the MySQL version used) related to information table permissions
  when trying to obtain the value of ft_min_word_len.

2017.05.28 - version 1.10.0
* Fixed warning due to use of deprecated action woocommerce_product_write_panels, now using woocommerce_product_data_panels.
* Fixed warnings where parameter is expected to be a reference but a value is given (related to PHP 7).
* Fixed error "The 'INFORMATION_SCHEMA.GLOBAL_VARIABLES' feature is disabled ..." on MySQL 5.7

2017.04.12 - version 1.9.0
* Updated the plugin for WooCommerce 3.0.0 compatibility.

2017.01.19 - version 1.8.1
* Fixed a PHP Fatal error for PHP < 5.5.0 "Can't use method return value in write context ..."

2017.01.11 - version 1.8.0
* Now using admin-ajax.php by default instead of the internal script.
* Fixed an issue where for no matches all results were returned instead.
* Added an additional internal method to enable or disable WPML language filtering.
* Searching in SKU is now also taken into account in search results page.

2016.11.24 - version 1.7.1
* Fixed search terms were not displayed on the search results page.

2016.10.21 - version 1.7.0
* Added support for search in SKU.
* Reduced the memory imprint of the visibility and out of stock checks.
* Fixed issues with sorting results.
* Improved the search results presented to match those of the instant search box.
* Fixed an additional issue related to empty search terms using fulltext search when weights are enabled (again related to https://bugs.mysql.com/bug.php?id=78485)
* Fixed issues with catalog and search visibility.

2016.07.25 - version 1.6.0
* Fixed WPML language filtering.
* Fixed an issue where search terms that resulted as empty after cleaning them up would cause
  a database query error in fulltext search with InnoDB tables due to a bug in MySQL https://bugs.mysql.com/bug.php?id=78485

2016.06.24 - version 1.5.0
* Adjusted the term query to use the new termmeta table (WP DB >= 34370 and WC >= 2.6.0).

2016.05.15 - version 1.4.3
* Filtering products which are not visible.

2015.12.07 - version 1.4.2
* Adjusts the product search submenu margin and enqueues admin styles for all our sections.

2015.08.12 - version 1.4.1
* Declares table-layout auto for search results table for visual compatibility with themes like Twenty Fifteen that declare it fixed.

2015.05.14 - version 1.4.0
* Performance options added with support for Full-Text Searches.
* Improved search term filters to exclude non-alphanumeric characters to avoid queries that could potentially lead to query errors.
* Added an option to log main query times.

2015.05.04 - version 1.3.1
* Improved internal definitions to maintain functionality with alternate
  WP_CONTENT_DIR and WP_CONTENT_URL definitions.

2015.03.12 - version 1.3.0
* Hiding out of stock products when "Out Of Stock Visibility" is enabled.
* Search results after focus-out-focus-in are emptied if search field is empty.
* Added the option to show prices for both shortcode and widget, using the
  attribute show_price (disabled by default).

2014.09.13 - version 1.2.0
* Admin menu restructured and plugin faq/help moved to Help tab.
* Fixed a memory issue with huge result sets.
* Added search weights for products and product categories.
* Added general search weights for product title, excerpt, content and tags.

2014.08.26 - version 1.1.0
* Fixed a code issue (improper static method call).
* Added OB handling to assure clean AJAX response for search results.
* Improved results to be fully clickable.
* Added use of a placeholder thumbnail image (option, enabled by default).
* Added show_description (disabled by default) based on a product's short
  description.
* Improved search result rendering.
* Improved search facility rendering.
* Added API function woocommerce_product_search().
* Adjusted for changes in WordPress 4.0 (like_escape is deprecated).
* Added the Product Search Thumbnail image size info to the Products section.
* Added a CSS rule for product search result titles to use the inherited font,
  to avoid conflicts with generic rules for the .title class in themes.
  By inheriting the font from its parent element, the default is more in line
  with its context.
* Added a CSS rule for product search result entries to apply a minimal padding
  to avoid conflicts with generic rules for the .entry class in themes.
* Fixed missing resources when widget is used.
* Moved plugin settings inside WooCommerce settings into its own Product Search tab.
* Added a link to the settings shown in the plugin's entry.
* Added a brief help section.
* Added WPML choice for widget.
* Added WPML language indication support
* Added woo-includes.

2014.07.28 - version 1.0.2
* Added readme.txt
* Improved search query service, now also using object cache to get category results.
* Added blinker timeout.
* Improved results visualization so that empty results have no border.
* Added a filter which allows to use admin-ajax instead of our core handler.

2014.07.13 - version 1.0.1
* Fixed a Javascript error when data returned is null.
* Changed the tags logic to conjunctive within multiple search term context.
* Adjusts search queries only where explicitly request through the ixwps
  parameter (on the posts_where filter).
* Using object cache to get post id results.

2014.06.26 - version 1.0.0
* Initial release
