New Features
AI Assistant — a new, license-gated suite of AI-powered tools available from a dedicated admin menu, with its own usage-tracking tab and interaction log:
Configuration Wizard — guides you through setting up a search instance and applies a recommended configuration for you.
Search Quality Report — analyses a search instance and reports issues and actionable recommendations.
Priorities Advisor — reviews your priority rules and flags problems such as orphaned terms/posts, empty rules, misconfigured phrase logic and nameless groups.
Synonym Discovery — suggests synonyms based on your content to improve recall.
Stopword Conflict Detector — detects stopwords that conflict with your indexed content.
Diagnostic Chat — ask questions about your search setup and get guided answers.
AI Keyword Suggestions — an AI-powered autocomplete and keyword-suggestion source; AI-sourced phrases are flagged in the frontend with a sparkle badge.
Index Table — rebuilt with a new management interface and engine:
New Overview panel with live indexing stats, a Stop button and restart support.
Index-size history chart with daily snapshots (recorded via REST, WP-CLI and WP-Cron) and a keyword-count series.
Cursor-based re-indexing for reliable processing of large sites.
New taxonomy-term exclusion rules and custom-field exclusion rules with AND/OR logic.
Re-index notification banner after settings that affect the index are saved.
In-panel WP-CLI tips; the "Post Types & Taxonomies" panel is now "Post Types & Filters".
Analytics — rebuilt fully:
Configure multiple Google Analytics 4 events with a flexible items[] format and 8 event triggers (including "try this").
New {search_id} and {search_name} template variables for event values.
Legacy Google Analytics 3 (window.ga) support has been removed.
Priorities — overhauled:
Individual Priorities have been merged into Priority Groups via a new post rule type.
Per-group enable/disable toggle with panel descriptions.
Multisite per-blog targeting for priority groups.
Index table keyword suggestions — a new autocomplete and keyword-suggestion source backed by the search index. It surfaces the words closest to what the visitor typed, with typo and transposition correction, ranked by popularity (#337)
User Searches block — a new Gutenberg block displaying Popular or Latest visitor searches, replacing the removed Top/Last search widgets (#318)
Synonyms — reworked: expansion is now always bidirectional (the "synonyms as keywords" option has been removed), synonyms are expanded at query-time for taxonomy term searches, and the panel shows a stale-index warning after changes so you know when a re-index is needed (#335)
Admin pages modernized: the Compatibility (now absorbing the former Performance page), Maintenance, and Help & Updates pages were refactored to a React/REST architecture, with a "Reset to defaults" option on Compatibility. The legacy Export/Import submenu has been removed.
All Searches: media panel reordering and bulk-delete support.
License activation gate: admin pages now prompt for activation when the license is inactive, with clearer activation and validation error messages.
Fixes & Changes
Optimized taxonomy filtering in search queries by replacing nested IN/NOT IN sub-queries with EXISTS/NOT EXISTS, preventing oversized queries that were being killed on some managed hosts (#287)
Fixed statistics-based keyword suggestions querying a dead legacy table; they now read from the active statistics table (#326)
Removed a dead code that made unneccessary db writes for legacy script data (#339)
Fixed possible fatal errors during plugin updates caused by a stale autoloader held in PHP memory (#336)
Fixed the Inter font not loading and the admin body font being incorrectly overridden (#334)
Upgraded the back-end color picker (spectrum) from v1.1.1 to v2.0.10, fixing a Safari white-swatch bug and transparent gradient handling.
Prevented theme-bundled jscolor scripts from hijacking the admin color pickers and resetting values after save.
Fixed a dbDelta error on activation by dropping stale duplicate synonym indexes.
The indexing UI now stays alive across admin menu switches, and stops & refreshes correctly when settings are saved.
Removed the performance-tracking feature; improved decoding of legacy encoded values during compatibility and post-type migrations.
Statistics panel improvements: switched charts to an area-chart style and fixed checkbox contrast and sizing in light and dark modes.
Admin UI polish: semantic button variants, refreshed stat-card tiles, and removal of unintended coloured accents.
This release focuses on optimizations, bundle size and bugfixes.
Fixes & Changes
Fixed a pagination issue with results redirection when "offset" and "paged" parameters are set simultaniously (#328)
Replaced icons on the back-end with lucide-react to greatly optimize the admin UI bundle sizes (-2MB overall) (#330)
Fixed Rest API URI when non-permalink structure is used (#329)
Fixed a very rare issue, where on some MySQL versions would not properly validate a subquery with COUNT() if the LIMIT is set to 1 (#327)
Some components were restructured in preparation of 4.29 AI integration
New Features
Added support for EPUB file contents to be indexed and searched via the index table and media service feature (#323)
Added a filter for statistics for suggested searches as well as an option to turn off their logging (#320)
Fixes & Changes
Fixed a magnifier and return key trigger for specific configurations (#321)
Improved the cache and statistics menus (#322)
Fixed a live loader issue with Divi 5 loops (#324)
New Features
Completely reworked the search cache submenu, adding realtime statistics of cache hit/miss data as well as introducing the "Super File" cache, which is an instant version of the classic file cache feature. (#316)
Added WP CLI control for the cache (#316)
Changes
Added row to the search statistics setting to export & delete legacy search statistics if they existed (#315)
Fixes
Fixed an issue where a phrase would be recorded twice in the statistics when using WPML (#313)
Fixed an issue where the CLI updater would fail if the HTTP_HOST server variable is not set (#312)
Fixed an issue where Divi 5 pagination would not work correctly when integratin with the query loop (#314)
Fixed an issue where Elementor loop grid would stay hidden after filtering if used with specific loading animations (#317)
For all the issues resolved, check out the 4.28.3 milestone.
This release is a small quickfix release for some minor issues, but as always, there is something new.
New Features
Added an option to transform all user input quote types to ASCII/Standard (Advanced Settings -> Keywords -> "Resolve all types of quotes to Standard/ASCII single and double quotes") (#306)
Changes
Ampersand "&" characters in user input are now properly converted for non-indexed searches to match in WordPress posts, taxonomy terms and custom fields database (#307)
Slightly improved the image parser (#310)
Fixes
Fixed an issue with multisite installation, when using the search statistics (#308)
Fixed a possible type coercion issue in the statistics interface (#311)
For all the issues resolved, check out the 4.28.2 milestone.
New Features
Added CLI commands to control the index table from the command line. (#302)
Added an option for the index table to be compressed, potentially saving ~50% disk space for larger databases (#305)
Added options to control the action of the "close" icon in the search input (clear, clear+reset, clear+reset+retrigger search) as well as if the results window should be closed when it's clicked (#256)
Added an option to remove irrelevant taxonomy filter values when the filter is used on archive pages (#271)
Added an option to control non-translated content visibility when using WPML (#275)
Added terms_include and terms_exclude arguments to the {get_values} custom field filter pseudo-code, so custom field values can be excluded or included by post categories. (#295)
Added an option to adjust the live search trigger delay (#298)
Added an option to separately set the minimum character count to trigger the live search as well as the redirection via magnifier or the return key actions (#301)
Improvements & Changes
Added ver query argument to the optimized and asynchronous script loaders so cache plugins have a better chance of picking up file changes during version updates (#300)
The auto-update system was greatly improved, now it should allow the WordPress "Enable auto updates" feature properly (#292)
Fixes
Fixed a rare issue where a if a search instance option data is corrupted, it should default instead of an error (#297)
Fixed an issue, where if a double quote character was used in the multiselect drop-down filter container, it would case a json parser error due to the incorrect encoding (#291)
Fixed a type coercion issue within the search statistics interaction handler (#290)
Fixed a possible Yoast SEO conflict (#299)
Fixed an issue with Elementor Posts and Product widget navigation when live loading is used along with query parameters (#296)
New Features
Search Statistics refactored. It features in-depth search, results and interaction tracking. (#264)
Added a Lightbox feature for image media results. Images from the media library now can be opened in a lightbox (#279)
Divi 5 Loops integration for live filtering (#273)
Divi Query Builder addon integration for live filtering (#267)
Added an option to turn off results redirection on click (#278)
Improvements & changes
Greatly improved Index Table matching for titles (#262)
PHP 8.5 compatibility fully tested (#288)
The asp_load_css, asp_load_js, asp_load_css_js hooks are deprecated, please use the more intuitive alternatives (#280)
Improved the Datepicker script automatic localization (#281) as well as the triggers (#282)
Changed the live search response body to full JSON instead of the current plaintext to better support automated translation scripts such as GTranslate (#283)
Improved script loading (#266)
Fixes
Number range custom field filter validation fixed, it now only validates on Enter key or on focus loss (#276)
Fixed the scrolling for double/triple finger touchpad top-down and sideways swiping for the Horizontal results layout (#284)
Fixed an issue with the WooCommerce advanced field, where it would yield an error when non-WooCommerce product post types were used (#261)
Fixed an issue with the auto-updater, where an error object was returned instead of a transient (#269)
Fixed the number of results returned for empty phrases when using media search with the index table (#258)
Fixed an error with the query arguments (#257)
Fixed an issue with the index table engine, where the incorrect number of partial title matches were reported (#286)
Fixed an issue where if the typing of QueryLoopBlock is not returned as WP_Block in the query vars hook, then a stdClass is accepted to avoid a type error (#268)
Fixed a post type grouping issue with the index table engine (#272)
Even though this is a minor release, it follows up on the previous improvements in 4.27. Most noteable new features are the Block Editor Query Loop and the GeneratePress Query filtering support.
For the full changelog, check out the 4.27.1 milestone on the development repository.
4.27.1 Ajax Search Pro Changelog
New Features
Filtering for Block Editor Query Loop is now supported (#110)
Similarly, filtering for the GenerateBlocks Query is also supported (#206)
Grouping by Taxonomy Terms now applies to Media Files as well (#47)
Autocomplete is now triggered by the "Tab" key (#223)
Keyword highlighting now works on live loaded features (#215)
Improvements
Added an additional key to the index table "doc" column to make lookups faster (#56)
Added a warning message to the index table trigger by meta feature (#177)
Added aria label and role to the checkbox container of front-end filters (#224)
Fixes
Fixed an issue where the reset button did not properly reset the autocomplete input (#49)
Fixed an issue with auto-populate and quoted search queries, where quotes would cause a decoder failure (#213)
Fixed an issue with the add-to-cart handler in the new Advanced Content field, where in repeated queries the add-to-cart would execute multiple times (#214)
Fixed an issue with the taxonomy "Select all" checkboxes, where in some cases it applies to all taxonomy filters (#216)
Fixed an issue where on PHP 7.4 the analytics may not load properly due to a type coercion (#220)
Fixed an issue where the "asp_option_checked" class will not apply to the checked/unchecked checkbox parent option classes (#222)
Fixed advanced fields on indexed queries (#221)
New Features
Added a visual tag editor for the Advanced Title and Description fields (#201)
Added support for Divi Blogs module Live filtering (#212)
Added an option for result group headers to be clickable links, leading to the group archive page (#160)
Added automated Singularization/Pluralization feature to the index table engine (#61)
Improvements
Improved ACF relationship field indexing (#208)
Greatly improved predictive keyword suggestions (#194)
When the Lite version shortcode is used, then Pro will output the first existing search instance after the Lite version is deactivated (#211)
HTML results output is now filtered through wp_kses_post variation to greatly improve security (#192)
Added support for Search Exclude plugin (#191)
Development has moved to PHP 8.4 to ensure compatibility (#185)
Added wp_cache_get() to some repetitive queries to greatly improve loading performances (#188)
Improved SEO for the "Load more results.." link (#181)
Fixes
Fixed capability checks from newer code recommendations (#210)
Fixed an issue with the index table, where on large datasets and not using relevance ordering the results would differ from the results page and the live results list (#198)
Fixed an issue where if the reset button was used along with either an input or range input filter, then hitting "Return" would trigger the reset due to the button being treated as a "submit" type (#203)
Fixed an issue with Elementor Loop grid and archive page filtering (#178)
Fixed an issue where the results page override would not trigger on Divi (#202)
Fixed an issue with user exclusion parameters (#180)
Fixed an issue with the autocomplete feature, where it would not clear properly (#183)
Fixed an issue with the keyword highlighter, where quote characters were not properly ignored and the highlighting was not executed (#204)
Fixed an issue where some data was not correctly wiped during plugin wipe (#209)
Fixed an issue with a query argument (#200)
Fixed the duplicated ID resolver script, where in some cases it was not working correctly (#199)
Fixed an issue with double quoted search phrases (#193)
Fixed an issue with the REST API where post type filters would affect the results incorrectly (#184)