Changelog
Complete version history for Glance Live Search. Each release includes new features, improvements, and bug fixes to make your WooCommerce product search faster, smarter, and more reliable.
Need help upgrading? Check our documentation or contact support.
Major release: FULLTEXT search, Redis/Memcached caching, FSE support, and 20+ improvements.
New Features
- FULLTEXT search support: Automatic detection of the
glse_ft_contentindex onwp_posts. When present, content and excerpt searches useMATCH...AGAINSTin boolean mode instead ofLIKE— dramatically faster on large catalogs (10,000+ products). - Full Site Editing (FSE) support: The Plugin detects the search bar in
wp_templateandwp_template_partposts and loads assets accordingly. Template scan results are cached for 1 hour. - Object cache integration: Server-side search cache now uses
wp_cache_set()/wp_cache_get()with theglsecache group — fully compatible with Redis, Memcached, and other persistent object caches. - Automatic cache invalidation: Search cache is flushed on product create, update, delete, and stock status change via
save_post_product,woocommerce_update_product,woocommerce_product_set_stock_status, anddeleted_posthooks. - Text button mobile adaptation: When the search button is set to « text » mode, it automatically switches to icon-only on mobile to save horizontal space.
- Pro/Free dual-activation guard:
GLSE_PRO_ACTIVEsentinel constant prevents « Cannot redeclare » fatals. The Pro version auto-deactivates the Free version with a dismissible admin notice. - Body-offset aware positioning: Dropdown results container now accounts for
position: relativeorposition: absoluteondocument.body(Elementor, Divi compatibility).
Improvements
- Minified assets in production:
search.min.js(56% smaller) andsearch.min.cssloaded automatically whenSCRIPT_DEBUGis false. - Late-rendering asset safety:
ensure_assets()method guarantees CSS/JS loading when shortcode renders afterwp_enqueue_scriptshas fired (AJAX page builders, lazy-loaded widgets). - FULLTEXT boolean operator escaping: Special characters (
+,-,*,",(,),~,<,>,@,^) are stripped from FULLTEXT queries to prevent syntax errors. - Cache stores total_found:
last_total_foundis included in the cache entry, eliminating a duplicateCOUNT(*)query on cache hits. - CSV export memory optimization: Export streams results in 1,000-row chunks via
fputcsv()instead of building the full CSV in memory. Includes UTF-8 BOM for Excel on Windows. - Server-side max_results enforcement:
max_resultsis capped at 1-50 in the AJAX handler, regardless of the value stored in settings. - Asset detection expanded:
is_product()added to the list of conditions that trigger asset loading. - ARIA on mobile overlay: Mobile overlay input inherits
role="combobox",aria-autocomplete, andaria-expandedfrom the original input. - Keyboard navigation polish: ArrowUp from no selection selects the last result. Tab key closes the dropdown.
- Network error fallback: A user-facing error message is always displayed on fetch failure, replacing the silent fail.
- Focus restored on overlay close: When the mobile overlay closes, focus returns to the original input element.
- Reduced motion support:
prefers-reduced-motionmedia query disables CSS animations in both frontend and admin. - Multi-instance form IDs: Unique IDs generated for each search bar instance, fixing outside-button mode when multiple bars are on the same page.
- Hook naming standardized: All hooks now use slash format (
glse/search/filters). Underscore-format hooks (glse_search_filters) remain as backward-compatible aliases. - Defensive CSS reinforced: Extended
!importantoverrides on result items, images, and links to prevent 38+ themes from breaking the search layout. - CommerceKit compatibility: CommerceKit AJAX Search is automatically disabled when Glance is active on Shoptimizer.
Removed
- Modal display mode: Removed in favor of the mobile overlay, which provides a better full-screen experience with focus trapping.
- Inline display mode: Removed. The dropdown mode with portaled positioning covers all use cases.
Bug Fixes
- Search bar was unstyled on homepage when placed via widget —
ensure_assets()now enqueues in theme header context. - WC_AJAX requests not loading the search engine —
$_GET['wc-ajax']detection added to the conditional class loader. - Pro/Free simultaneous activation caused a PHP fatal (« Cannot redeclare ») — resolved with
GLSE_PRO_ACTIVEsentinel constant. - Free version color picker and display options were not properly locked behind the Pro gate.
Client-side caching, search history, mobile overlay, and developer extensibility.
New Features
- Client-side multi-term cache: Up to 20 search results cached in a JavaScript
Mapwith 5-minute TTL and FIFO eviction. Instant results on repeated queries — zero network requests. - « View all results » link: When total matches exceed the displayed results, a « View all results (N) » link appears at the bottom of the dropdown, linking to the WooCommerce search results page.
- Search history: Recent searches stored in
localStorage(configurable, 1-20 items). Displayed on input focus when the field is empty. Clear button included. - Full-screen mobile overlay: On screens below the configurable breakpoint (default: 768px), focusing the search input opens a full-screen overlay with its own input, results, and close button. Includes focus trapping and body scroll lock.
- Search in descriptions and excerpts: Optional setting to include
post_contentandpost_excerptin search queries (uses LIKE fallback or FULLTEXT when available). - Product tag search: Tags matching the search term are displayed in a dedicated section above product results.
- WC_AJAX endpoints: Search requests now use
wc_ajax_glse_live_searchby default, bypassing the full admin bootstrap for faster response times. Falls back towp-admin/admin-ajax.phpautomatically. - Developer hooks: 10 new PHP filter hooks added
- Gutenberg block:
glance-live-search/searchblock with live preview in the editor. - Elementor widget: Drag-and-drop search bar widget for Elementor page builder.
Improvements
- Analytics recording now fires only on network requests (not on cache hits), reducing unnecessary database writes.
- Search history items are XSS-protected via
escHtml()before rendering.
Bug Fixes
- Mobile overlay body scroll lock was not releasing on orientation change.
WC_AJAXclass existence check added before registering WC_AJAX hooks, preventing fatal on rare WooCommerce configurations.
Click tracking, upsell recommendations, and design presets.
New Features
- CTR / click tracking (Pro): Product clicks from search results are tracked via
navigator.sendBeacon(). Data includes query, product ID, product name, and result position. Stored inwp_glse_clickstable. - Upsell recommendations (Pro): A « You might also like » section below search results, populated from the first result’s WooCommerce upsells. Falls back to featured products if no upsells are configured.
- Design presets: Three built-in presets — Sharp (square corners, high contrast), Clean (subtle borders, 8px radius), and Pill (fully rounded, 24px radius). Each preset auto-fills all color and dimension settings.
- Category search results (Pro): Product categories matching the search term are displayed in a dedicated section with thumbnails and product counts.
Improvements
- Rate limiting now uses separate transient keys per endpoint, preventing shared counters between search and analytics requests.
- Cache key now includes active filters and language code, preventing cross-language cache collisions on multilingual sites.
- Database migration system introduced. Migrations run automatically on version change via
glse_db_versionoption.
Analytics dashboard and multilingual support.
New Features
- Search analytics dashboard: A dedicated Analytics tab in the admin settings showing total searches, average response time, zero-result rate, top keywords, and daily search volume chart.
- WPML and Polylang support (Pro): Search results are automatically filtered to the active language. Analytics track searches per language with breakdown charts.
- Price range filter (Pro): Filter search results by minimum and/or maximum price.
- In-stock filter (Pro): Restrict search results to products with
_stock_status = 'instock'.
Initial release.
Features
- AJAX live search for WooCommerce products by title and SKU.
- Search results dropdown with product image, title, and price.
- Configurable search delay (debounce), minimum characters, and placeholder text.
- Search button with icon or text mode, inside or outside the search bar.
- WordPress nonce verification and IP-based rate limiting (60 requests/minute).
- Direct SQL queries via
$wpdb->prepare()— bypassesWP_Queryfor reliable, fast results. - 4-tier relevance sorting: exact title match, title prefix, exact SKU, title contains.
- Shortcode
[glance_search]and WordPress widget. - Freemius SDK integration for licensing, updates, and optional analytics.
- Compatible with WordPress 6.0+ and WooCommerce 8.0+.
For questions about a specific release, contact us at help@glancelivesearch.com
