Super Speedy Search by WP Intense v5.44
No changelogs found!
Super Speedy Search v5.53.10
= 5.53 (13th May 2026) =
* `?showweights=1` debug overlay now covers all post types and every weight, including the new taxonomy conditional match. Three fixes shipped together: (1) the new taxmatch weight from 5.53 wasn't being added to the score for single-post-type queries OR exposed as a debug column for either path — both fixed, so a single-PT search now scores taxmatch rules correctly and renders one `weight_taxmatch_<tax>_<slug>` column per rule, while multi-PT searches add a `weight_taxmatch_total` aggregate alongside the existing `weight_meta_match_total`/`weight_meta_value_total`/`weight_meta_date_total`. (2) The `RELEVANCE` total now appears in the debug output even when sorting by price/date/title etc. — previously it was only projected when `orderby=relevance` was the active sort, so admins comparing two products on a price-sorted page couldn't see what each one's relevance score *would have been*. (3) A new `wp_footer` HTML-comment fallback emits the per-post weight breakdown as `<!-- SSS post 123 "Title" [product]: RELEVANCE=… | weight_title=… | … -->` for every result row regardless of theme. Themes that override both the WC product loop template AND `the_content` (custom block themes, headless renderers) used to drop the debug entirely; the comments are always there for view-source, the visible inline rendering still happens where supported.
* Top Searches table on Analytics & Caching is now sortable and searchable. Click any of Search Term, Searches, Avg Speed or Last Searched to flip the order (default remains Searches DESC). The new filter input above the table queries against a FULLTEXT index on `search_term` — typing 3+ characters uses MATCH ... AGAINST in BOOLEAN MODE with the same `+word*` prefix-wildcard pattern as the front-end search, so 'iph' finds 'iphone 13 case' instantly even on logs with millions of rows. Tokens of 1-2 characters automatically fall back to LIKE (prefix `LIKE 'xy%'` when the whole input is short, `LIKE '%xy%'` when combined with longer tokens that already narrow the set). The FT index is added automatically on existing installs the first time the Analytics tab loads after upgrade (one ALTER TABLE on a single-column varchar; runs in seconds even on busy logs). The active time-range filter (24h / 7d / 30d) still applies to the search results so what you type matches what's visible.
* Administrator is now a user-controllable row in Elevated Search Roles. Previously the administrator checkbox was hardcoded on (disabled, always checked) so admins always saw out-of-stock, hidden and private products in search results — fine for most sites, but a few admins wanted to browse the storefront and search results the way a regular shopper would (e.g. to verify what customers actually see). The row now defaults to checked so existing installs are unchanged, but it can be unticked to make admin searches use the same visibility rules as everyone else. Other roles still default to off and remain opt-in.
* Search-result cache key now includes `orderby`, `order`, a hash of the URL path (minus `/page/N/`), and hashes of the query's explicit `tax_query` and `meta_query`. Pre-5.53.7 the key was only `(searchstring, post_type, paged, lang)`, so a search warmed at /shop/?s=foo without orderby would silently return its relevance-ordered IDs (with `orderby` overridden to `post__in`) for every subsequent /shop/?s=foo&orderby=price, every /product-category/X/?s=foo (different archive), and every price-filter or stock-filter refinement. The path component is necessary because at `pre_get_posts` time WP hasn't yet built the `tax_query` array for URL-derived archives like /product-category/gaming/ (that happens later in WP_Query:arse_tax_query), so a tax-array-only hash wouldn't have distinguished /shop/ from /product-category/X/. Each variant now gets its own cache entry. Cache hit rate drops slightly in exchange for correctness; on busy sites the warm tier rebuilds quickly under load.
* Defensive sss_outer_orderby fallback in alter_clauses. When the user asks for `orderby=price` (meta_value_num) but the WP_Query meta_query JOIN didn't get built for whatever reason (an aggressive plugin stripped the orderby clause, another filter ran later, etc.), SSS now constructs the postmeta JOIN and ORDER BY explicitly so the outer query is never `ORDER BY LIMIT n` (which MySQL silently treats as no-ordering, losing the user's choice). Covers `meta_value_num`, `meta_value`, `date`/`publish_date`, and `title`; everything else falls back to a deterministic post_date DESC so the SQL is always valid.
* Taxonomy combination suggestions: the post type label is now a *claimable* position when the admin enabled "Show at Start" or "Show at End" on the combination row. Previously typing only the post type name (e.g. "forestry") matched the fulltext index but the post-fulltext claim algorithm dropped every row because no actual taxonomy term name was matched - so suggestions for that post type silently never appeared. Now, when the admin opted to surface the post type label in the rendered suggestion, that label counts as an extra claimable position; typing "forestry" returns rows in the Forestry post type, and typing "forestry trees" ranks the Forestry/Trees row above the Agriculture/Trees row because Forestry/Trees scored 2 of 2 versus Agriculture/Trees scoring 1 of 2. Rows where the admin chose "Don't Show" are unchanged (label not claimable, row not findable by typing the post type name) - keeps "what the user sees == what they can claim". No rebuild required; the change is in the claim algorithm at query time and the existing taxonomy-suggestions table already includes the post_type_label in its FULLTEXT-indexed combined column.
* The deferred-indexing hook surface is now aligned with Super Speedy Filters' SSF_Table_Maintenance pattern - same function naming (`sss_defer_post_update`, `sss_defer_term_update`, `sss_process_deferred_updates`), same shutdown priority (999), same DOING_AUTOSAVE and auto-draft skips, and the same wide hook coverage. SSS now hooks `wp_after_insert_post`, `save_post`, `wp_insert_post` (priority 99), `transition_post_status`, `set_object_terms`, the full WC product/variation/stock/duplicate set, bulk-edit and quick-edit AJAX, the WP importer hooks, and the explicit REST API insert/save/delete hooks for posts and terms - on top of the postmeta hooks (added_post_meta/updated_postmeta/deleted_post_meta) that SSF doesn't need but SSS does. All of them feed two deduped queues (posts + terms) drained once at shutdown, so a single product save that triggers 15 different action firings still runs one sss_update_posts batch. Same pattern as SSF, same function names where possible; a developer who learned one plugin's maintenance code immediately recognises the other's.
* Incremental indexing now picks up postmeta changes that happen after `wp_insert_post`. SSS used to hook only `wp_after_insert_post` (and a couple of WC variation hooks), which meant any importer or plugin using the pattern "create the post, then call `update_post_meta` for each field" produced an index row with empty `metavalues` - searches by SKU or other indexed meta_keys would miss those products until the next rebuild. SSS now also hooks `added_post_meta`/`updated_postmeta`/`deleted_post_meta`, gated to only the meta_keys SSS actually indexes (the Meta Keys tab plus every key referenced by metamatch/metavalue/metadate weight rules). All of SSS's per-post indexing hooks now feed a deduped queue that flushes once at PHP shutdown, so a request that fires `wp_after_insert_post` plus eight `update_post_meta` calls plus two `edited_term` calls runs a single `sss_update_posts` batch instead of eleven. Same hook surface fires from admin, REST API, Gutenberg, WP-CLI and cron - any code path that goes through WordPress core's `wp_insert_post`/`update_post_meta` benefits.
* New optional "Strict SKU search" mode on the Main tab. By default, SSS normalises punctuation in the fulltext index (so a search for `ABC.D.E` will match `ABC_D_EF` too — fast but loose, which is fine for most sites). Tick the new checkbox to layer an additional LIKE filter on the original, un-normalised meta values after the fulltext narrowing — searching for `ABC.D.E` will then return only products whose actual SKU contains the literal `ABC.D.E`, dropping the underscore-variant false positives. A new `metavalues_raw` column on wp_superspeedysearch holds the un-normalised meta string; populated from the next rebuild, then read with LIKE at query time on rows already narrowed by MATCH/AGAINST so the cost stays bounded. The filter only fires when the user's search term contains punctuation, so non-SKU searches are unaffected.
* Readiness Status now shows a warning when MySQL's `max_allowed_packet` is below 64MB. The default on many MariaDB installs is 16MB, which is fine for everyday queries but too small for the rebuild's bulk INSERT/UPDATE statements once a catalogue grows past a few thousand rows - the symptom on those sites is an intermittent "Error establishing a database connection" mid-rebuild that recovers a few seconds later. The new row prints the current value plus a link to the KB article explaining how to raise it; rebuilds keep working at any value, the warning just flags the rebuild risk.
* New "Taxonomy Conditional Match Weight" row on each per-type Weights block. Admin picks a taxonomy attached to the post type plus a term slug, and matches (or non-matches) of that term increase or decrease the relevancy score by a factor - same UX shape as the existing "Meta Conditional Match Weight". One new `term_taxonomy_ids` column on wp_superspeedysearch holds a comma-separated list of every term_taxonomy_id the post belongs to, populated via GROUP_CONCAT during rebuild; scoring uses FIND_IN_SET against that single column at query time, so there are no per-rule columns and no JOINs at search time. The one-time rebuild after upgrade adds the column - after that, adding, editing or deleting taxmatch rules takes effect on the next search with no rebuild required. The rebuild also bumps `group_concat_max_len` to 65535 so posts with many terms don't get truncated.
Super Speedy Search by WP Intense v5.3.1
##### Version 5.3.1 (2026-05-18)
- Fix PHP 8 hook type errors causing fatal errors in certain situations.
Super Speedy Search v5.52.32
= 5.52 (12th May 2026) =
* `wp sss rebuild` now flushes the WordPress object cache at the end of the build. Without this, sites with a persistent object cache (Redis, Memcached) could keep serving the pre-rebuild alloptions blob and the search-column list used to build MATCH() queries would lag the actual rebuilt FULLTEXT index — manifesting as "Can't find FULLTEXT index matching the column list" until the cache expired on its own.
* New multi-post-type search on the Front-end tab. Picking "Search multiple post types" (the renamed "Do not set" option, now moved off the Main tab) exposes a Layout choice: Single ranked list (the existing single-query behaviour) or Mixed sections by post type (a new layout that runs one query per post type and renders each section with its own template). Each path is independent - sites that never touch the new controls are unaffected.
* Single-list mode adds two opt-in overrules: "Overrule post types" forces the search to exactly the ticked types (replaces whatever theme/Woo/site hooks would otherwise decide), and "Overrule template" routes the results page through the chosen post type's archive-{slug}.php so a multi-type search can look and feel like (e.g.) the product archive. Both default to "Let my site decide" so existing behaviour is preserved on upgrade.
* Per-row weights in single-list multi-type queries. Previously SSS picked one post type and used its weights for the entire result set (so e.g. a mixed post+product query ranked products with post weights, ignoring product-specific metamatches like the _stock_status=instock boost). Each row is now scored using its own post type's weights via per-row CASE expressions over wp_superspeedysearch.post_type. Single-type queries are unaffected and emit the same SQL as before.
* New "Post Type Promotion" row on each per-type Weights block - adds a constant boost to that type's relevancy score so admins can bias e.g. products above posts in a single ranked list. Has no effect in single-type searches or in Mixed Sections layout (where section order is the ranking).
* Mixed Sections layout ships three new templates: templates/sss-multi-search.php (wrapper), templates/sss-multi-search-section.php (generic), and templates/sss-multi-search-section-product.php (Woo-aware, uses wc_get_template_part for full product cards). Themes can override at <theme>/super-speedy-search/<file>.php. Each section header supports a configurable heading with a `<search-term>` placeholder substituted at render time.
* Plugin-wide exclude_from_search policy. Post types registered with `exclude_from_search => true` are no longer offered as options anywhere - Weights, Suggestions, Ajax post types, Default Post Type dropdown, multi-search overrule list, mixed-sections "Add section" dropdown, widgets, Gutenberg block. The post type author's intent (exclude from search) is now honoured by SSS's UI. Sites that intentionally want to expose such a CPT can re-enable it via the existing sss_post_types_args filter. Side effect on upgrade: an excluded CPT previously configured in (e.g.) the Ajax tab will disappear from the admin UI but its saved settings remain in sss_options.
* Taxonomy combination suggestions are now ranked by how completely the user's typed words actually claimed the row's terms, not by raw depth. Each typed word claims at most one term, and rows where every term was claimed (perfect-fit) are surfaced first; within that tier, more terms claimed wins (a 3-term match beats a 2-term beats a 1-term). The old "depth priority multiplier" setting is removed - it could push triples to the top even when the user only typed a single word that incidentally hit two terms in the row, which produced misleading suggestions. Rows where the search only matched the post-type label (no term claimed) are no longer returned.
* New "Token matching" setting on the Taxonomy Suggestions section: Optimal (default) finds the best token-to-term assignment regardless of typed order; Strict order requires tokens to claim terms left-to-right in the admin's tax_a → tax_b → tax_c order, so out-of-order typing scores lower. Choose Strict if you set the taxonomies in the order you expect users to type.
* Taxonomy combination suggestion URLs now route through Super Speedy Filters when it's active, so click destinations like "Dogs ▸ Dog Grooming ▸ Cool Dogs Co ▸ Red" land on the pretty permalink form (e.g. /product-category/dogs/dog-grooming/brands/cool-dogs-co/color/red/) instead of mixing the pretty base with raw query args (?product_brand=cool-dogs-co&pa_color=red). Without SSF the existing query-arg URL is still produced. Requires the SSF Pretty URLs add-on for the prettified form.
* Taxonomy Suggestions combination rows now have a "Show Post Type Name" dropdown (Don't Show / Show at Start / Show at End) so you can decide per-row whether to surface the post-type label in the suggestion (e.g. "Caterpillar - Excavators ▸ Machine") and where it appears. Default is Don't Show. Changing this preference takes effect immediately - no rebuild needed.
* Taxonomy combination suggestions now bold the matching prefix tokens (e.g. typing "dog to" bolds "Dog" and "To" in "Dog Toys"), matching the existing post-title suggestions, and the dropdown styling (padding, hover, link colour) now matches the post-title and taxonomy lists for visual consistency.
* Taxonomy combination suggestions now go through the ultra-fast ajax mu-plugin path when "Enable our ultra-fast ajax" is enabled - previously combinations always fell through to the standard WP REST API path while post-title and taxonomy suggestions used the fast path, so combinations were noticeably slower than the other suggestion types. (Bumps the bundled mu-plugin to 1.14.3 - it auto-redeploys on the next admin page load.)
* Taxonomy Suggestions combination rows now filter the Taxonomy A/B/C dropdowns to only show taxonomies registered for the selected post type, so you can't accidentally pick a taxonomy that doesn't apply.
* New Taxonomy Suggestions feature - precompute suggestion rows that combine 1, 2, or 3 taxonomy terms for a specific post type (e.g. "Caterpillar - Excavators - Machine") with accurate post counts per row. Only combinations that actually exist on published posts are indexed. Suggestions appear in the ajax dropdown below the existing token suggestions. Configure on the new Taxonomy Suggestions section of the Suggestions tab - pick a post type and 1-3 taxonomies per row; the depth is inferred from how many taxonomy slots you fill.
* Same (make, category) pair that exists in multiple post types produces one suggestion row per post type, each with its own post count and post-type label, so users see e.g. "Caterpillar - Excavators - Machine" and "Caterpillar - Excavators - Industry" as separate rows when both contain products.
* Filtered archive URLs for taxonomy-combination clicks are built at read time and land on a WooCommerce/taxonomy archive page with the other terms applied as query args - no dependency on Super Speedy Filters.
* New REST endpoint /wp-json/sss/v1/combinations/<term> returns matching combinations as JSON.
* New WP-CLI subcommand: wp sss rebuild taxonomy_suggestions rebuilds only the taxonomy-combinations table. wp sss rebuild (no scope) and wp sss rebuild all now also include taxonomy suggestions as the final step; wp sss rebuild search and wp sss rebuild suggestions continue to skip them. Recommended: add wp sss rebuild to your server crontab for nightly refreshes if the admin-triggered rebuild ever hits your hosting's PHP timeout.
* Advanced tab now lists all WP-CLI rebuild commands with guidance to prefer CLI when admin-triggered rebuilds fail due to hosting limits (30-second PHP timeout, memory caps, unreliable WP-cron).
* Rebuild skips disabled suggestion types - if Enable Post Title Suggestions is off, the post-title token-generation pipeline is not run (previously it rebuilt the suggestion table regardless of whether anything would query it). Same applies to Enable Taxonomy Suggestions. The existing suggestion table is left in place so re-enabling the feature later doesn't require a rebuild to start working again.
* Restructured Suggestions tab into two sections: Post Title Suggestions (the existing token-based suggestions, now with a post-types picker so you can scan specific post types for suggestion tokens instead of relying on the Ajax Post Types selection) and the new Taxonomy Suggestions section.
* Ajax tab "Enabled Ajax Suggestions" renamed to "Enable Suggestions" with two checkboxes: Enable Post Title Suggestions, Enable Taxonomy Suggestions.
* Legacy "Suggest Taxonomies" single-term field on the Ajax tab is now hidden for new users via a one-shot migration; existing sites that already had taxonomies ticked keep it visible so their setup continues to work unchanged.
* Fixed a gap between the wp-admin toolbar and the left sidebar that appeared on every admin page under PHP 8.2+ - the SSS class was creating dynamic properties without declaring them, firing E_DEPRECATED warnings that caused WP to add a .php-error class to body.
* Fixed undefined $wpdb warning in the Readiness Status collation list.
Super Speedy Search v5.51.5
== Changelog ==
= 5.51 (18th April 2026) =
* Renamed "Search Analytics" tab to "Analytics & Caching" to better reflect the caching options it contains
* Added auto-cache for slow searches: caches any search term whose tracked average speed exceeds a configurable threshold (default > 250ms) for a configurable duration (default 20 minutes). Works alongside the existing frequency-based and top-X auto-cache options
* Fixed missing avg speed in Analytics & Caching table - front-end main-query searches were being tracked before the query ran so no speed was recorded (column always showed -). Now stashes the start time in pre_get_posts and records elapsed ms from the_posts filter after the query actually executes. Slow-search auto-cache now has real data to work with.
* Meta Search tab now loads instantly on first page view - only a curated whitelist of commonly-searched meta keys (SKU, MPN, GTIN, ISBN, EAN, UPC, ASIN, brand, manufacturer, model, supplier, supplier code, part number, subtitle, byline, deck, summary, purchase note, variation description, etc.) is queried against wp_postmeta via an indexed IN lookup
* Added "Fetch all meta keys" button on the Meta Search tab (replaces "Refresh Meta Keys List") that runs the exhaustive postmeta scan on demand via AJAX
* Already-selected meta keys are always surfaced on first page load so saved settings remain visible even if not in the whitelist
* Added new sss_meta_keys_whitelist filter so the whitelist can be extended per-site
* Added exclusion for any meta_key containing "post_id" (e.g. foo_post_id_123) from the exhaustive scan - catches plugins that embed post IDs into meta key names
* Added exclusion for meta keys starting with fsp_fb_ from the exhaustive scan
* WP-CLI rebuild now prints each SQL statement BEFORE executing it (previously printed after completion) so users can see which query is currently running in real time
* Added Search Analytics tab - track which terms users search for, view top searches, and configure per-term redirects and caching
* Added search term redirects - admins can redirect popular search terms (e.g. "borisov") to specific URLs (e.g. /tags/borisov/) instead of running a search
* Added search result caching - global cache, per-term cache, and auto-cache for top X searches from last Y hours
* Added search tracking - aggregate search frequency tracking with INSERT ON DUPLICATE KEY UPDATE for minimal performance impact
* Fixed undefined $default_language variable in suggestion builder causing PHP warnings and incorrect language assignment for user-added suggestions
* Fixed collation detection: SSS tables now match the actual wp_posts table collation (detected via SHOW TABLE STATUS) instead of relying on wp-config.php defaults which may differ from existing tables
* Removed hardcoded collate utf8mb4_unicode_ci from suggestions DELETE join - the rebuild now ensures all suggestion tables have matching collations automatically
* Rebuild process now ALTERs persisting suggestion tables (useradded/userremoved) to match the detected collation if they differ
* Readiness check now always shows collation of all SSS and WordPress tables regardless of whether TranslatePress is installed
* TranslatePress collation mismatches now show ALTER SQL for the user to run manually
* Build process now properly aborts on "Duplicate entry" scheduler errors instead of retrying in an infinite loop, with instructions to use wp sss rebuild via CLI
* Build process now properly cancels the queue on SQL errors instead of calling exit which left the queue intact
* Fixed search result caching - cache now works for both full page and AJAX searches via shared code path in sss_pre_get_posts
* Fixed cache storage bug where WordPress's found_posts filter fired before the_posts, clearing pending cache data before IDs could be captured
* Changed cache storage from query vars (which WordPress resets internally) to SSS instance property using spl_object_id for reliable tracking
* Cache now stores found_posts total from FOUND_ROWS() for correct pagination on cache hits
* Frequency-based caching: "Cache searches which happen X times within Y period for Z duration" replaces simple "cache all" toggle
* Settings tabs now retain active tab after saving (hash preserved in form referer)
* Search speed (avg query time in ms) now tracked and displayed in Search Analytics table
* Added Multi-search tab with two-phase search: Phase 1 restricts to recent content for faster results, Phase 2 falls back to unrestricted search if not enough recent results found
* Configurable recent period (days/weeks/months) and "Search older items" button text
* When Phase 1 fills a full page, pagination is replaced with "Search older items" button that shows remaining results excluding the recent ones
* AJAX dropdown search also uses multi-phase: tries recent-only first, falls back to unrestricted if insufficient results
* Multi-phase search works with existing search caching - cached results respect the date restriction
Super Speedy Search by WP Intense v5.45
== Changelog ==
= 5.45 (19th January 2026) =
* Added fix for media search where some images were marked as hidden but should have been showing up anyway
Download Free Super Speedy Search by WP Intense v5.44
No changelogs found!