{"id":187371,"date":"2024-06-06T19:33:55","date_gmt":"2024-06-06T19:33:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/product-search-for-woocommerce\/"},"modified":"2026-08-09T15:11:01","modified_gmt":"2026-08-09T15:11:01","slug":"product-search-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/da.wordpress.org\/plugins\/product-search-for-woocommerce\/","author":20887420,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"6.9.7","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Product Search for WooCommerce","header_author":"StorePlugin","header_description":"Product Search for WooCommerce","assets_banners_color":"3f69c5","last_updated":"2026-08-09 15:11:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/storeplugin.net\/plugins\/product-search-for-woocommerce","header_author_uri":"https:\/\/storeplugin.net\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1743,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"storeplugin","date":"2024-11-16 11:17:55"},"1.1.2":{"tag":"1.1.2","author":"storeplugin","date":"2025-12-15 12:11:54"},"1.1.3":{"tag":"1.1.3","author":"storeplugin","date":"2026-02-19 18:11:35"},"2.0.0":{"tag":"2.0.0","author":"storeplugin","date":"2026-08-09 15:11:01"}},"upgrade_notice":{"2.0.0":"<p>Major release. Fixes a security issue that let any logged-in user rebuild the search index, moves search onto a database index, and rebuilds the settings screen. Your settings are kept. Requires WordPress 6.5 and PHP 7.4.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3419970,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3419970,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3419970,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.2","1.1.3","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3419970,"resolution":"1","location":"assets","locale":"","width":1160,"height":747},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3639388,"resolution":"2","location":"assets","locale":"","width":2647,"height":1438},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3639497,"resolution":"3","location":"assets","locale":"","width":2647,"height":1439},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3639497,"resolution":"4","location":"assets","locale":"","width":2653,"height":1443},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3639497,"resolution":"5","location":"assets","locale":"","width":2642,"height":1437}},"screenshots":{"1":"Live Ajax product search on the shop, showing matching products with their images and prices as the customer types.","2":"Settings, General. Switch the Ajax search on or off, and copy the shortcode to place a search form anywhere.","3":"Settings, Search Field. Set the placeholder, the loading message and the no-results message, and show or hide the submit button.","4":"Settings, Results. Choose how many products to show before the More button, and whether to display the product image and price.","5":"Index and Status. Index health at a glance, with tools to rebuild the search index and clear cached results."}},"plugin_section":[],"plugin_tags":[2109,3539,5185,5183,5184],"plugin_category":[],"plugin_contributors":[220332],"plugin_business_model":[],"class_list":["post-187371","plugin","type-plugin","status-publish","hentry","plugin_tags-ajax-search","plugin_tags-instant-search","plugin_tags-live-search","plugin_tags-product-search","plugin_tags-woocommerce-search","plugin_contributors-storeplugin","plugin_committers-storeplugin"],"banners":{"banner":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/banner-772x250.jpg?rev=3419970","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/icon-128x128.jpg?rev=3419970","icon_2x":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/icon-256x256.jpg?rev=3419970","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/screenshot-1.png?rev=3419970","caption":"Live Ajax product search on the shop, showing matching products with their images and prices as the customer types."},{"src":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/screenshot-2.png?rev=3639388","caption":"Settings, General. Switch the Ajax search on or off, and copy the shortcode to place a search form anywhere."},{"src":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/screenshot-3.png?rev=3639497","caption":"Settings, Search Field. Set the placeholder, the loading message and the no-results message, and show or hide the submit button."},{"src":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/screenshot-4.png?rev=3639497","caption":"Settings, Results. Choose how many products to show before the More button, and whether to display the product image and price."},{"src":"https:\/\/ps.w.org\/product-search-for-woocommerce\/assets\/screenshot-5.png?rev=3639497","caption":"Index and Status. Index health at a glance, with tools to rebuild the search index and clear cached results."}],"raw_content":"<!--section=description-->\n<p><strong>Product Search for WooCommerce<\/strong> adds a fast, live Ajax product search to your WooCommerce store. As a shopper types, matching products appear straight away in a dropdown beneath the search box, complete with the product image, the current price and a direct link to the product page. No page reloads, no waiting, no hunting through category menus.<\/p>\n\n<p>Search is where buying intent is highest. A shopper who reaches for the search box has already decided they want something specific. If that search is slow, or returns blog posts and pages alongside products, or makes them load a full results page before they can tell whether you stock what they want, a good proportion of them simply leave. This plugin is built to make that moment quick and obvious.<\/p>\n\n<h4>Why the default WordPress search is not enough for a shop<\/h4>\n\n<p>WordPress ships with a search built for a blog, not a catalogue. On a WooCommerce store it causes a number of familiar problems:<\/p>\n\n<ul>\n<li>It searches every post type at once, so blog posts, pages and products all compete in the same list.<\/li>\n<li>It shows a plain list of titles. No product image, no price, nothing that helps a shopper decide.<\/li>\n<li>It requires a full page load before the shopper sees a single result.<\/li>\n<li>It runs a <code>LIKE '%term%'<\/code> query against the posts table, which cannot use a database index. On a catalogue of any real size that means scanning every row, every time.<\/li>\n<\/ul>\n\n<p>Product Search for WooCommerce replaces that experience with results that appear as you type, restricted to published products, and drawn from a purpose-built index rather than from a scan of your posts table.<\/p>\n\n<h4>Built on a dedicated search index<\/h4>\n\n<p>Rather than querying WordPress tables on every keystroke, the plugin maintains its own search table containing just the fields it needs from your published products. That table carries a <strong>MySQL FULLTEXT index<\/strong> across product titles, descriptions and short descriptions, so a search is answered by an indexed lookup rather than a full table scan.<\/p>\n\n<p>Every word a shopper types is required and wildcarded, so partial words match as they type: typing \"hood log\" will find \"Hoodie with Logo\" before the shopper has finished either word. When a full-text search cannot help, for example with very short words or common stop words that MySQL does not index, the plugin automatically falls back to a broader title match so those searches keep working instead of silently returning nothing.<\/p>\n\n<p>Results are ordered by relevance, so the closest matches come first rather than arriving in whatever order the database happened to return them.<\/p>\n\n<h4>What your customers see<\/h4>\n\n<ul>\n<li>An instant dropdown of matching products, updated as they type.<\/li>\n<li>The <strong>product image<\/strong>, so items are recognisable at a glance. Optional.<\/li>\n<li>The <strong>current price<\/strong>, formatted in your store currency and tax settings. Optional.<\/li>\n<li>A <strong>More<\/strong> button to page through additional matches without leaving the page.<\/li>\n<li>Your own wording for the placeholder text, the loading message and the no-results message.<\/li>\n<li>An optional Search button, for shoppers who prefer to submit rather than pick a suggestion.<\/li>\n<\/ul>\n\n<p>You choose how many products appear before the More button, anywhere from one to a hundred.<\/p>\n\n<h4>Keyboard and screen reader support<\/h4>\n\n<p>The search field is a proper accessible combobox, not a text box with a list stuck underneath it. That means:<\/p>\n\n<ul>\n<li><strong>Arrow keys<\/strong> move up and down the results, wrapping at either end.<\/li>\n<li><strong>Home<\/strong> and <strong>End<\/strong> jump to the first and last result.<\/li>\n<li><strong>Enter<\/strong> opens the highlighted product.<\/li>\n<li><strong>Escape<\/strong> closes the dropdown.<\/li>\n<li>Result counts, empty results and errors are announced to screen readers through a live region.<\/li>\n<li>The list uses correct listbox and option roles, with <code>aria-expanded<\/code>, <code>aria-controls<\/code> and <code>aria-activedescendant<\/code> kept in step as the shopper moves through the results.<\/li>\n<\/ul>\n\n<p>Customers who navigate by keyboard, and customers using assistive technology, get the same fast search as everyone else.<\/p>\n\n<h4>Use it anywhere, as many times as you like<\/h4>\n\n<p>Place the search form with a single shortcode:<\/p>\n\n<pre><code>[product_search_for_woocommerce]\n<\/code><\/pre>\n\n<p>Drop it into a page, a post, a block widget, a sidebar or a template. You can use it <strong>more than once on the same page<\/strong> and each form works independently, with its own results and its own paging. The shortcode accepts optional <code>label<\/code> and <code>placeholder<\/code> attributes if you want per-instance wording.<\/p>\n\n<p>Assets are only loaded on pages that actually contain a search form, so the rest of your site is not asked to download JavaScript and CSS it will never use.<\/p>\n\n<h4>A settings screen that tells you what is going on<\/h4>\n\n<p>Settings are organised into four sections: General, Search Field, Results, and Index &amp; Status.<\/p>\n\n<p>The <strong>Index &amp; Status<\/strong> section reports the health of the search index in plain language:<\/p>\n\n<ul>\n<li>How many products are indexed, against how many published products exist.<\/li>\n<li>When the index was last rebuilt in full.<\/li>\n<li>Whether the full-text index is present and active.<\/li>\n<li>Which database schema revision the install is on.<\/li>\n<li>Whether a background data conversion is running, finished, or stalled.<\/li>\n<\/ul>\n\n<p>Two maintenance tools sit alongside it. <strong>Rebuild search index<\/strong> re-reads every published product in batches with a live progress bar, so it is safe on large catalogues instead of timing out. <strong>Clear cached results<\/strong> drops cached search responses if a change is not showing on the shop yet. Both update the status readout as soon as they finish, so you never have to guess whether the thing you just clicked worked.<\/p>\n\n<h4>Keeps itself in sync automatically<\/h4>\n\n<p>The index follows your catalogue without being asked. Products are added or updated when saved, and removed when trashed, drafted, made private or deleted. Untrashing or publishing a scheduled product puts it straight back in. This works whether the change came from the WordPress admin, a CSV import, WP-CLI, cron or the REST API.<\/p>\n\n<p>Prices and images are stored as raw values and rendered at the moment a search runs, which means <strong>changing your store currency, tax display or thumbnail size takes effect immediately<\/strong>, with no reindexing required.<\/p>\n\n<h4>Fast, and considerate of your server<\/h4>\n\n<ul>\n<li>Search responses are cached briefly, so repeated searches for the same term are served without touching the database. The cache clears itself automatically whenever a product changes.<\/li>\n<li>Only the columns actually shown to the shopper are fetched, rather than shipping full product descriptions to the browser and discarding them.<\/li>\n<li>Indexing runs in batches, in the background, so a large catalogue cannot exhaust a single request.<\/li>\n<li>Requests are cancelled when a newer keystroke supersedes them, so a slow response cannot overwrite a fresher one.<\/li>\n<\/ul>\n\n<h4>Built for developers<\/h4>\n\n<p>The plugin exposes filters for the behaviour most likely to need tuning:<\/p>\n\n<ul>\n<li><code>ajax_search_index_batch_size<\/code> \u2014 products handled per indexing batch.<\/li>\n<li><code>ajax_search_min_token_length<\/code> \u2014 shortest word that may take part in a full-text match.<\/li>\n<li><code>ajax_search_cache_ttl<\/code> \u2014 how long a search response stays cached, in seconds.<\/li>\n<\/ul>\n\n<p>Markup is clean, class names are predictable, and the frontend stylesheet is small and easy to override from your theme.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>Product Search for WooCommerce makes <strong>no external requests<\/strong>. It does not call home, does not load remote scripts or fonts, does not track your shoppers and does not send any data anywhere. Everything runs on your own server, against your own database.<\/p>\n\n<h4>Translation ready<\/h4>\n\n<p>Every string in the plugin is translatable, and a current POT file ships in the <code>languages<\/code> folder.<\/p>\n\n<h4>Clean uninstall<\/h4>\n\n<p>If you remove the plugin, it removes its own search table, its options, its cached search responses and its scheduled task. Multisite installs are cleaned up site by site. Nothing is left behind in your database.<\/p>\n\n<h3>Key features:<\/h3>\n\n<ul>\n<li>Live Ajax product search with results as you type<\/li>\n<li>Dedicated search index with MySQL FULLTEXT, plus an automatic fallback for short and stop words<\/li>\n<li>Relevance ordered results<\/li>\n<li>Show the product image in search results<\/li>\n<li>Show the product price in search results, in your store currency and tax settings<\/li>\n<li>Configurable number of results, with paging for the rest<\/li>\n<li>Customisable placeholder, loading and no-results text<\/li>\n<li>Optional search submit button<\/li>\n<li>Full keyboard navigation and screen reader support<\/li>\n<li>Use the shortcode as many times as you like on one page<\/li>\n<li>Assets loaded only on pages that contain a search form<\/li>\n<li>Automatic index sync on product save, trash, untrash and delete<\/li>\n<li>Batched index rebuild with live progress<\/li>\n<li>Index health and diagnostics screen<\/li>\n<li>Built-in response caching, cleared automatically on product changes<\/li>\n<li>No external requests, no tracking<\/li>\n<li>Translation ready<\/li>\n<li>Complete uninstall cleanup, multisite aware<\/li>\n<\/ul>\n\n<h3>Premium features:<\/h3>\n\n<ul>\n<li>Show product rating in search results<\/li>\n<li>Show product description in search results<\/li>\n<li>Show product category in search results<\/li>\n<li>Show product tags in search results<\/li>\n<li>Search products by SKU<\/li>\n<li>Display a \"Featured\" label<\/li>\n<li>Display an \"Add to Cart\" button<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p>The plugin installation process in WordPress is very easy and convenient. Simply follow the steps below to get started.<\/p>\n\n<ol>\n<li>Upload <code>product-search-for-woocommerce<\/code> to the <code>\/wp-content\/plugins\/<\/code> directory, or install it from <strong>Plugins &gt; Add New<\/strong> in your WordPress admin.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress. WooCommerce must be installed and active first.<\/li>\n<li>Go to <strong>Product Search<\/strong> in the admin menu to configure it.<\/li>\n<li>Copy the shortcode <code>[product_search_for_woocommerce]<\/code> and paste it into any page, post or widget where you want a search form.<\/li>\n<\/ol>\n\n<p>On activation the plugin builds its search index from your published products, so search works straight away.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20ajax%20search%20improve%20the%20experience%20on%20my%20woocommerce%20store%3F\"><h3>How does the Ajax search improve the experience on my WooCommerce store?<\/h3><\/dt>\n<dd><p>Results appear beneath the search box as the shopper types, without reloading the page. Each result shows the product image and price, so shoppers can tell at a glance whether you stock what they want and go straight to it. That removes the load-and-wait step that a standard WordPress search requires.<\/p><\/dd>\n<dt id=\"can%20product%20images%20be%20displayed%20in%20the%20search%20results%3F\"><h3>Can product images be displayed in the search results?<\/h3><\/dt>\n<dd><p>Yes. Showing the product image is a setting you can turn on or off under Results. Images make products recognisable at a glance and help shoppers pick the right item quickly.<\/p><\/dd>\n<dt id=\"can%20product%20prices%20be%20displayed%20in%20the%20search%20results%3F\"><h3>Can product prices be displayed in the search results?<\/h3><\/dt>\n<dd><p>Yes, and prices are formatted using your live WooCommerce currency and tax display settings. If you change your store currency, the prices shown in search results change with it immediately, with no reindexing needed.<\/p><\/dd>\n<dt id=\"which%20product%20fields%20does%20the%20search%20look%20at%3F\"><h3>Which product fields does the search look at?<\/h3><\/dt>\n<dd><p>The free version indexes and searches product titles, descriptions and short descriptions. Searching by SKU is available in the premium version.<\/p><\/dd>\n<dt id=\"does%20it%20search%20anything%20other%20than%20products%3F\"><h3>Does it search anything other than products?<\/h3><\/dt>\n<dd><p>No. Only published WooCommerce products are indexed, so blog posts, pages and other post types never appear in the results.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>It is designed to do the opposite. Searches are answered from a dedicated index rather than by scanning the posts table, responses are briefly cached, and only the fields actually displayed are fetched. Frontend assets load only on pages that contain a search form.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20large%20catalogues%3F\"><h3>Does it work on large catalogues?<\/h3><\/dt>\n<dd><p>Yes. Indexing runs in batches rather than trying to process an entire catalogue in a single request, and the rebuild tool shows live progress as it works through your products.<\/p><\/dd>\n<dt id=\"can%20i%20put%20the%20search%20form%20in%20more%20than%20one%20place%3F\"><h3>Can I put the search form in more than one place?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>[product_search_for_woocommerce]<\/code> shortcode as many times as you need, including several times on the same page. Each form keeps its own results and its own paging.<\/p><\/dd>\n<dt id=\"does%20the%20search%20keep%20itself%20up%20to%20date%3F\"><h3>Does the search keep itself up to date?<\/h3><\/dt>\n<dd><p>Yes. Products are indexed when saved and removed when trashed, drafted or deleted, whether the change came from the admin, an importer, WP-CLI or the REST API. You can also rebuild the whole index at any time from the Index &amp; Status screen.<\/p><\/dd>\n<dt id=\"is%20the%20search%20accessible%3F\"><h3>Is the search accessible?<\/h3><\/dt>\n<dd><p>Yes. The field is an accessible combobox with full keyboard support: arrow keys to move through results, Home and End to jump to either end, Enter to open the highlighted product and Escape to close. Result counts and empty results are announced to screen readers.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20woocommerce%3F\"><h3>Does the plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce must be installed and active, since everything the plugin indexes comes from your WooCommerce products.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20to%20external%20services%3F\"><h3>Does the plugin send any data to external services?<\/h3><\/dt>\n<dd><p>No. There are no external requests of any kind. No tracking, no remote scripts, no data leaving your server.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20it%3F\"><h3>What happens if I uninstall it?<\/h3><\/dt>\n<dd><p>The plugin removes its search table, its options, its cached search responses and its scheduled task, so nothing is left behind. On multisite this is done for each site on the network.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<p>A major release. The search now runs on a proper database index, the settings screen has been rebuilt, and a number of long-standing bugs are fixed, including one security issue. Your settings are carried over and nothing needs reconfiguring. The search index is rebuilt automatically in the background after updating.<\/p>\n\n<p><strong>Security<\/strong><\/p>\n\n<ul>\n<li>Fix: The rebuild endpoint checked a nonce but never checked a capability, and the nonce was available on any admin page. Any logged-in user, including a subscriber, could empty and rebuild the search index. It now requires the manage options capability and is no longer registered for logged-out visitors.<\/li>\n<\/ul>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li>New: Search now covers product descriptions and short descriptions as well as titles, using a MySQL FULLTEXT index, with an automatic fallback so short words and stop words keep working.<\/li>\n<li>New: Rebuilt settings screen, organised into General, Search Field, Results, and Index &amp; Status.<\/li>\n<li>New: Index &amp; Status screen reporting how many products are indexed, when the index was last rebuilt in full, whether the full-text index is active, the database schema revision, and whether a background conversion is running or has stalled.<\/li>\n<li>New: Rebuild the search index from the settings screen, in batches, with a live progress bar.<\/li>\n<li>New: Clear cached search results from the settings screen.<\/li>\n<li>New: Full keyboard support in the results dropdown. Arrow keys move through results, Home and End jump to either end, Enter opens the highlighted product, Escape closes.<\/li>\n<li>New: Screen reader support. The field is a proper combobox, the results are a listbox, and result counts, empty results and errors are announced.<\/li>\n<li>New: Several search forms can be used on the same page, each with its own results and paging.<\/li>\n<li>New: Search responses are cached briefly and cleared automatically whenever a product changes.<\/li>\n<li>New: Uninstalling now removes the plugin's table, options, cached responses and scheduled task, on every site of a multisite network.<\/li>\n<li>New: Products are now kept in sync when trashed, untrashed, or published on a schedule, not only when saved.<\/li>\n<\/ul>\n\n<p><strong>Improvements<\/strong><\/p>\n\n<ul>\n<li>Improve: Searches are answered from an index instead of scanning the whole table on every keystroke.<\/li>\n<li>Improve: Indexing runs in batches, so large catalogues no longer time out.<\/li>\n<li>Improve: Prices and images are rendered when a search runs rather than stored as markup, so changing your store currency, tax display or thumbnail size takes effect immediately with no reindexing.<\/li>\n<li>Improve: Frontend assets load only on pages that contain a search form, instead of on every page of the site.<\/li>\n<li>Improve: Admin assets load only on this plugin's settings screen, instead of on every admin screen.<\/li>\n<li>Improve: Only the fields actually shown are sent to the browser, rather than full product descriptions.<\/li>\n<li>Improve: The results panel is no longer drawn underneath WooCommerce's product gallery controls.<\/li>\n<li>Improve: The stylesheet is now guaranteed to load before the form it styles, so the search no longer flashes unstyled.<\/li>\n<li>Improve: Settings are now sanitised before being saved, and the results-per-page value is capped.<\/li>\n<li>Improve: The settings screen follows your admin colour scheme, keeps a consistent height between sections, and returns you to the section you were on after saving.<\/li>\n<li>Improve: Help text is now associated with its field for screen readers.<\/li>\n<\/ul>\n\n<p><strong>Fixes<\/strong><\/p>\n\n<ul>\n<li>Fix: Activating without WooCommerce caused a fatal error. Activation now stops with a readable message.<\/li>\n<li>Fix: Every search failed with a division by zero error until the settings page had been saved once.<\/li>\n<li>Fix: Newly created products were never added to the search index.<\/li>\n<li>Fix: The More button never appeared, because the result count was calculated differently from the results.<\/li>\n<li>Fix: Trashed products stayed searchable and linked to pages that no longer existed.<\/li>\n<li>Fix: Search terms containing an apostrophe, such as O'Brien, matched nothing.<\/li>\n<li>Fix: The database index on product titles was never actually created.<\/li>\n<li>Fix: The same product could be stored more than once, and two simultaneous saves could race into duplicate rows.<\/li>\n<li>Fix: Products indexed on save were stored differently from products indexed by a rebuild, which made some terms unsearchable and showed raw HTML entities to shoppers.<\/li>\n<li>Fix: A failed database upgrade was recorded as successful, leaving the install stuck with no further attempt.<\/li>\n<li>Fix: Translations were never loaded, because the language folder was passed as an absolute path.<\/li>\n<li>Fix: The search endpoint returned an empty success response on error, which the frontend could not distinguish from a result set. Errors are now reported to the shopper.<\/li>\n<li>Fix: Typing a new search after paging resumed from the old page.<\/li>\n<li>Fix: Paste, cut, autofill and the field's clear button did not trigger a search.<\/li>\n<li>Fix: The paging button overlapped the results list.<\/li>\n<li>Fix: A slow response could overwrite a newer one.<\/li>\n<\/ul>\n\n<p><strong>Developer<\/strong><\/p>\n\n<ul>\n<li>Dev: New filters, <code>ajax_search_index_batch_size<\/code>, <code>ajax_search_min_token_length<\/code> and <code>ajax_search_cache_ttl<\/code>.<\/li>\n<li>Dev: The shortcode accepts <code>label<\/code> and <code>placeholder<\/code> attributes.<\/li>\n<li>Dev: Requires WooCommerce, declared with the Requires Plugins header.<\/li>\n<li>Dev: Minimum WordPress 6.5, minimum PHP 7.4.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Other: Compatible with WordPress 6.9.1<\/li>\n<li>Other: Compatible with WooCommerce 10.5.2<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Other: Compatible with WordPress 6.9<\/li>\n<li>Other: Compatible with WooCommerce 10.4.2<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial version.<\/li>\n<\/ul>","raw_excerpt":"Fast Ajax product search for WooCommerce. Instant results with images and prices as customers type, served from a dedicated search index.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/187371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=187371"}],"author":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/storeplugin"}],"wp:attachment":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=187371"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=187371"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=187371"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=187371"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=187371"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=187371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}