Scalability Pro changelog
Speed up your whole site - big catalogues, big databases, no re-architecture
Latest version6.39.2
Released3 November 2026
Last 90 days37 releases
Last 90 days107 changes
Tested up toWordPress 7.1
Product page
What Scalability Pro does, what it costs and who it is for.
Knowledge base
Setup guides, how-tos and troubleshooting for Scalability Pro.
Discord support
Ask a question in the Scalability Pro channel and get an answer from Dave.
Downloads & licence
Grab the latest build or check your licence and renewal status.
6.39.23 November 2026
- Updated super-speedy-settings to 1.14.5 creating the MCP connection now needs permission to add users, so a multisite sub-site administrator cannot create the agent account when the network does not allow it.
6.39.12 November 2026
- The Fast Ajax endpoint editor shows active plugins on the never-unload list ticked and locked as Always loaded (protected).
6.39.02 November 2026
- Fast Ajax endpoints now always keep plugins on the never-unload list loaded, such as security, firewall, consent and payment plugins.
- The settings-page outbound HTTP shield now applies only to administrators, so a visitor's admin-ajax request can no longer have its external calls blocked by a
Refererheader.
6.38.030 October 2026
- Alter main query to use EXISTS rather than LEFT JOIN leaves pages Super Speedy Filters serves from its own index to Super Speedy Filters, so they no longer carry an extra product visibility check.
6.37.1130 October 2026
- Fixed database errors about missing
scalability_pro_post_count_cacheandscalability_pro_transient_cachetables after activating Scalability Pro with WP-CLI: activation creates the cache tables before anything uses them.
6.37.1029 October 2026
- Updated super-speedy-settings to 1.14.3 update downloads now send the licence key in a request header instead of the download URL.
6.37.929 October 2026
- Fixed native WordPress search running slower with Scalability Pro's indexes installed on large stores: the
wpi_scalability_pro_sitemapsindex now leads withpost_typeand is rebuilt automatically after updating.
6.37.829 October 2026
- Reworded the Alter main query to use EXISTS rather than LEFT JOIN description: it changes how the SQL is written, never which products are shown.
6.37.729 October 2026
- Clarified the Alter main query to use EXISTS rather than LEFT JOIN description: it changes only the front-end main query, mainly WooCommerce's product visibility clause, and lists what to check before leaving it on.
6.37.629 October 2026
- Fixed the Options Autoload, HTTP API and Imports tabs scrolling sideways on a phone; HTTP API rules now stack into labelled fields on narrow screens.
6.37.529 October 2026
- Fixed Cache [sale_products] shortcode and Cache [best_selling_products] shortcode showing no products inside page-builder widgets such as Elementor's Shortcode widget.
6.37.427 October 2026
- Enable good settings, Apply all settings and the Options Autoload scan keep retrying for as long as the server answers busy (503, 429, 502 or 504) and show how long it has been busy, instead of failing after about a minute.
- The Options Autoload scan waits for a slow page to finish instead of abandoning it after 60 seconds.
- Enable good settings no longer cancels a performance analysis started from the Performance Analysis screen; it asks you to cancel it there.
6.37.327 October 2026
- Fixed Cache [best_selling_products] shortcode showing the products on sale instead of the best sellers.
- The cached [sale_products] and [best_selling_products] output now refreshes as soon as a product is saved or an order changes sales counts.
6.37.226 October 2026
- Fixed Enable good settings and Apply all settings stopping on a large site with "The index build is taking more than 10 minutes"; they now wait for each index build however long it takes and show how long it has been building.
- Fixed the Indexes tab reporting an error and moving on when an index build outlasts the web server's request timeout; it now waits for the build to finish and shows its progress on the tab.
6.37.120 October 2026
- Fixed Plugin Unloads verification rejecting an unchanged page that has pagination links, with "the page output changed with the plugin unloads active: rendered HTML grew by 2.0 B".
6.37.020 October 2026
- Plugin Unloads and Fast Ajax endpoint unloads are out of beta: the Unload Plugins tab is always available, with no opt-in under Advanced.
- The Plugin unloading and Fast Ajax runtime switches are on by default, but nothing is unloaded and no mu-plugin is installed until you configure and enable a rule; sites that already saved rules keep their switch setting.
- Enable good settings no longer creates or enables plugin unload rules; unloads are always your decision on the Unload Plugins tab.
- The taxonomy EXISTS rewrite is now an ordinary setting under Advanced > Query rewrites and the next-page lookahead is an ordinary Query Speed option, both still off by default; updating never turns either on.
6.36.114 October 2026
- Fixed Cache wp-admin WooCommerce Products Category List so a cached category list skips the category and product count queries on wp-admin > Products, and filtering by a category reuses the same cache.
6.368 September 2026
- Simplified Fast Ajax theme handling to a Keep loading my theme checkbox, with the WordPress default theme used when unticked.
- Fast Ajax builds require recorded tests for the current source, current core and the approved SQL review.
- Fast Ajax drafts select only required plugins and group optional choices by related endpoint selections and deterministic capability hints.
- Added capture-time Fast Ajax policy details and a link to Performance Analysis AJAX before/after profiling.
- Added a default-off Fast Ajax endpoint-unloading beta with exact registered-route rules, safe keep-list defaults, automatic failure shutoff and optional Performance Analysis evidence
6.358 September 2026
- Restored the GROUP BY optimisation for joined
wp_posts.*queries without changing their selected columns
6.344 September 2026
- Fixed configured
SPRO_SQL_CALC_ROWS_FINGERPRINTentries causingstrpos(): Argument #1 ($haystack) must be of type string, array givenon PHP 8 - Fixed explicit WP-CLI term recounts while deferred term counting is enabled
- Fixed manual term recounts for stores where WordPress term and term-taxonomy IDs differ
6.334 September 2026
- Removed the
wp-config.phpbackup warning while retaining automatic cleanup of the old backup file
6.323 September 2026
- Added a direct Main-tab link from the high-autoload warning to Options Autoload
- Declared WordPress 6.4, MySQL 5.7 or MariaDB 10.2 as supported floors and updated legacy plugin links
- Restored "Alter main query to use EXISTS rather than LEFT JOIN" under Advanced as a disabled-by-default beta, with corrected multi-term AND and mixed-OR handling
- Added a disabled-by-default one-extra-row pagination lookahead under Remove SQL_CALC_ROWS, applied only to completed SQL after other query builders to avoid duplicate
LIMITclauses - Fixed beta lookahead totals for queries with explicit offsets so the reported page count includes the skipped rows
6.3125 August 2026
- Plugin Unloads is now an opt-in beta under Advanced, while sites with existing rules retain access; its global switch is always visible at the top of the beta tab
- Plugin unload choices now stay isolated from ordinary visitors until their page verification passes
- Fixed a PHP 8 fatal when another plugin returns
nullfrom aposts_resultsfilter; thanks to Glenn H for reporting it - Tested up to WordPress 7.1, including its updated posts list-table navigation
- The Unload Plugins tab now runs through a single code path, showing each plugin's verdict and the reason for it inside the scan popover
- The Unload Plugins master switch is now an ON/OFF toggle at the top of the tab
- Added an Abort scan button to the Unload Plugins scan monitor, which now closes on Escape or a click outside it
- An Unload Plugins scan now survives a dropped progress poll, and reports a permanent refusal instead of appearing to stall
- A deep scan can now reach certain confidence on a dynamic page, and explains how a page's output differed when it cannot
- The Unload Plugins tab is now usable by a site owner rather than only by the plugin's author
- Fixed plugins staying ticked in the Unload Plugins popover after being unticked
- Updated super-speedy-settings to the latest version
6.3019 August 2026
- New Unload Plugins tab stops selected plugins loading on the pages where Performance Analysis measured that they do nothing, using per-page rules compiled into an mu-plugin
- Unload rules are sorted into certain, likely and unknown confidence, and Enable good settings applies only the certain ones
- Only anonymous page views are ever trimmed, so a POST, wp-admin, REST, a system entry point and any logged-in visitor always load every plugin
- Payment, security, membership, consent, caching and multilingual plugins are never unloaded
- The Unload Plugins tab needs Super Speedy Performance Analysis 0.24.0 or later, and is not offered on multisite
6.29.4521 August 2026
- Performance Analysis now installs from its free public release when no licensed package is available, so a site with no licence key can still measure
6.29.3921 August 2026
- Removed the Slow Query Log tab; use your database server's own slow query log, or Super Speedy Performance Analysis for per-page timings
- Removed the
wp-content/db.phpdrop-in the Slow Query Log needed, so Scalability Pro no longer conflicts with Query Monitor's database drop-in, HyperDB, LudicrousDB or database-cache plugins - An existing installation has its Slow Query Log settings and any leftover drop-in removed on the next admin page load
- Removed the unused TGM Plugin Activation library
- Cleanup actions on multisite now require
manage_network_plugins
6.29.3420 August 2026
- Scalability Pro no longer reads, parses or writes
wp-config.php - A
wp-config.php.spro-backupfile left by an earlier version for those using slow query log is now correctly removed - MCP access is now opt-in
- Completed a three-pass security review of the plugin
6.29.3019 August 2026
- New HTTP API tab rules you write can stop another plugin's licence, update or telemetry calls while a wp-admin page renders
- Outbound requests are allowed by default, and a rule can never reach the front end, REST, cron, a form submission, the plugin and update screens, commerce screens, your own site's URLs or 22 named payment gateway hosts
- Removed the Switch off phone home setting, replaced by the HTTP API tab's per-rule controls; a site that had it enabled allows outbound requests again until you add rules
6.29.2415 August 2026
- Enable good settings and Apply all settings no longer configure or build Super Speedy Archives, which now does both from its own tab
- Clear all options now reverts only Scalability Pro's own settings, report and indexes, and leaves Super Speedy Archives and its table alone
6.29.2314 August 2026
- Moved MCP onto the one shared Abilities bridge and removed Scalability Pro's duplicate dedicated Adapter server and AI Engine registration
- MCP setup now uses a dedicated least-privilege agent user, with
spro_applyand plugin installation as separate execute permissions
6.29.2213 August 2026
- Updated super-speedy-settings to the latest version
6.29.2113 August 2026
- Options scans now use the administrator's browser when Basic Auth, a WAF, CDN or other security layer blocks server loopbacks
- Scan failures now name the failed page and mechanism instead of treating an HTTP response without recorded data as success
- Apply Good Settings now drives browser-transport Performance Analysis runs and reports failed steps honestly at completion
6.29.1713 August 2026
- A run that could not apply every step now says so on the results screen and names the steps, instead of reporting "All done".
- Fixed the archive optimisation being reported as applied when switching it back on had actually failed.
6.29.1613 August 2026
- This plugin now describes in plain English what it publishes to a shared analysis, listed on the Performance Analysis Share tab with a switch to turn it off.
6.29.1512 August 2026
- Clear all options now reverts Super Speedy Archives as well, switching the optimisation off and dropping its mirror table, because this plugin is what configured and built them.
- When Super Speedy Performance Analysis is active and you have opted in to sharing, this plugin publishes which of its optimisations are on alongside a shared analysis, so a before measurement can be told apart from an after one. Settings only, never your licence key.
- Added
options_optimizer,checkout_purge_shieldandcheckout_purge_timeout_capto the agent and MCP settings surface.
6.2910 August 2026
- When the Super Speedy Archives add-on is active, Enable good settings and Apply all settings now configure it from the same measurement and build its table for you, so the after measurement shows the archive speed-up alongside everything else
- The archive optimisation is turned off before the before measurement, so what gets configured comes from your real queries rather than ones Archives has already rewritten
- The first tab is renamed Main and is now a guided setup - measure, optimise, cache - with the Enable good settings button front and centre
- Buttons restyled to the Super Speedy Imports look across every tab including Save Changes, with the Inter and JetBrains Mono fonts bundled locally; the Advanced tab's buttons are all secondary, and the plugin version now shows in a chip beside the logo
- Enable good settings works through the plan one item at a time, showing each index being created and then each setting being applied, and can be re-run whenever you like to fill in anything missing; an index build that outlives the web request shows still applying and waits for the database to finish instead of reporting an error
- When our free Super Speedy Performance Analysis plugin is active, a good-settings run measures your key pages before and after and shows the results - per-page generation times, SQL time and which pages got faster, each linked to the URL that was measured
- The Getting Started tab can install Super Speedy Performance Analysis for you with one click
- New Apply all settings button next to Enable good settings adds the maximum-speed extras - next/previous page counts, natural sort order and the optimised private-content check - with each trade-off stated in the preview; also available as
wp spro recommended --allandmode=allon thespro/apply-recommendedability - New Clear all options button on the Main tab, under the good-settings buttons, returns every setting to its default, clears the stored before/after report and drops every index Scalability Pro created, so you can revert a good-settings run
- Good settings no longer touches the Query Speed row-count options, so page counts stay correct; use Apply all settings or the Query Speed tab if you want them
- Good settings now also turns on the checkout purge shield, and lists what it deliberately leaves alone and why
- New Optimise Options on the Options Autoload tab (called Single Pages until 6.29.11): scans your key pages (including wp-admin orders and product screens if you tick them) to see which options each really fetches, then stops autoloading big unused options and starts autoloading hot ones - reviewable before applying, fully revertible, with an automatic monthly mode; Enable good settings turns the automatic mode on with the default thresholds
- The options optimiser is also available as
wp spro options-scan,options-plan,options-applyandoptions-revert, and as four new abilities for AI agents - Indexes now survive deactivation and are removed when the plugin is deleted instead, so deactivating to test something no longer costs you your indexes; the cleanup setting is now called Delete indexes when the plugin is deleted and a pre-6.29 opt-out is carried over
- The plugin's abilities are now discoverable on the MCP Adapter's default server as well as the dedicated
/wp-json/mcp/scalability-proendpoint, and thedelete_indexes_on_deactivationability setting is renameddelete_indexes_on_uninstall - New
wp spro recommendedWP-CLI command applies the same preset from the command line, with--dry-run,--indexes-onlyand--settings-only - New
wp spro statusWP-CLI command lists every managed index and every good setting still outstanding - New
spro/describe-recommendedandspro/apply-recommendedabilities let an AI agent read the plan and, once you confirm, apply it - Fixed an index whose prefix length covers the whole column, such as
wpi_scalability_pro_sitemapsonwp_posts, being reported as needing a rebuild on every check
6.287 August 2026
- New Checkout purge shield on the WooCommerce tab, on by default: cache-purge plugins such as Nginx Helper no longer treat every WooCommerce order note as a page edit, which on a test store took a checkout from 30 outbound HTTP requests down to none
- New optional setting to cap the site's own purge requests at 3 seconds instead of the usual 5, off by default
- Fixed a front-end fatal
array_key_exists(): Argument #2 ($array) must be of type array, false givenwhen the plugin is activated without a wp-admin page having been loaded since - Licence corrected to GPLv3 in
readme.txt, matching the plugin header
6.27.36 August 2026
- Updated the shared Super Speedy settings module: the Super Speedy wordmark on the settings header is now a crisp high-resolution image with a dark-text variant
6.27.13 August 2026
- The
wpi_postmeta_boostindex now covers the whole ofmeta_keyrather than its first 50 characters, soSELECT DISTINCT meta_keylookups use the index instead of scanningwp_postmeta; existing installations have the index rebuilt automatically - Updated the shared Super Speedy settings module: AI agents can check your licence and install other Super Speedy plugins over MCP, now also exposed on AI Engine's MCP endpoint when AI Engine is active
- New Check frequency setting - cap licence, update and changelog checks to once a day or once a week, and see when the licence was last checked
- Licence and changelog checks fail fast when superspeedyplugins.com cannot be reached, instead of hanging the settings page
- The newest installed copy of the shared Super Speedy settings code now runs site-wide, whichever plugin loads first - previously the alphabetically-first plugin's often-older copy won
- The plugin's MCP abilities also appear on AI Engine's MCP endpoint as spro_ tools when AI Engine is active, so one AI connector reaches them
6.272 August 2026
- Added an Advanced-tab good-settings preset with a complete preview of settings changes and applicable indexes before confirmation
- Added estimated-total, maximum-page and progressive Previous/current/Next pagination strategies for archives where exact totals are disabled
- Added a one-result pagination look-ahead so a full final page no longer links to an empty Next page
- Added optional scheduled daily or weekly term recounts, configurable start time, batched progress and a manual Run now action
- Added a Performance Analyser status panel and link on the Advanced tab
- Added an Advanced-tab option to keep Scalability Pro indexes when the plugin is deactivated; index deletion remains enabled by default
- Added six WordPress Abilities API abilities for inspecting settings, measuring pages and database probes, changing safe or confirmed settings, and managing indexes
- Moved the WP All Import Query Monitor diagnostic into the separate
spro-addon-query-monitorsupport plugin, removingeval()from Scalability Pro - Replaced direct
wp-config.phprewriting with atomicwp-content/spro-config.phpgeneration and safe migration of the legacy$SPRO_GLOBALSblock - Added versioned index definitions, exact column and direction drift detection, retired-index cleanup and automatic resumable reconciliation for existing installations
- Added a server-side index-operation lock and bounded, resumable index deletion to prevent overlapping or timed-out DDL requests
- Removed two duplicate index definitions and corrected multisite user and usermeta index handling
- Fixed custom post type bulk actions disappearing when the Bulk Edit safety limit is exceeded; only Bulk Edit is now removed
- Fixed newly registered custom image sizes being removed even though the administrator had never deselected them
- Fixed concurrent cache writes causing duplicate-entry errors by replacing delete-then-insert with one atomic upsert
- Fixed post-count and WP All Export query filters inspecting unrelated queries for the rest of the request
- Added a scoped comment-query option for skipping exact totals inside custom query alterations
- Fixed the experimental taxonomy EXISTS rewrite interpolating unsanitised taxonomy names and term IDs
- Fixed GROUP BY optimisation applying DISTINCT to
wp_posts.*queries with joins - Fixed slow-query logging opening a new MySQL connection for every logged query and mishandling
DB_HOSTports or sockets - Fixed the original cache tables using inconsistent character sets and racy creation checks
- Added a WP Admin notice and manual action for clearing the deliberately persistent month-dropdown cache
- Hardened settings import/export, product-attribute term search and direct access to include files
- Removed production debug logging, stale hooks, a public developer shortcode and other unreachable code
6.26.727 July 2026
- Fixed blank archive, shop and blog pages when the slow query log table is missing
- Fixed a custom query alteration emptying the content of the hook it is attached to, such as an empty navigation menu when
wp_nav_menu_itemsis the start hook - Index creation now reports the database error when an index cannot be created, instead of showing a green tick
- Index creation now asks for an in-place, lock-free build where the database supports it, falling back automatically where a shape cannot be built in place, so creating an index no longer locks the table for writes
- Phone-home blocker URL exceptions now accept a full URL including the
https://prefix, not just the bare domain - Removed an
information_schemalookup and aSHOW FIELDSthat ran on every admin request - Fixed
?page=scalabilityproon a front-end URL changing which image sizes are registered, and with them thesrcsetof the page - The redundant GROUP BY optimisation is no longer skipped when the search term or post title contains the word "join"
- Fixed the offset-query optimisation losing the sort order of results, most visible in sitemap plugins paginating by modified date
- Fixed DISTINCT/GROUP BY removal on
LIMIT 1queries stripping a GROUP BY that another plugin's aggregate depended on - The Slow Query Log query pattern is now validated when you save it, and tells you if it is rejected
- Fixed Drop All Indexes removing indexes it did not create, where the name started with "wpi" without the underscore
- Fixed a potential division by zero when faking the found-posts total if posts per page is set to zero
- Removal of the found-rows count is now skipped during REST requests, which keeps the
X-WP-TotalandX-WP-TotalPagesheaders correct - Fixed draft previews and password-protected posts being hidden when the private-post check optimisation was applied through a custom query alteration
- Declared compatibility with WooCommerce High-Performance Order Storage (HPOS), Cart and Checkout blocks, and the product block editor
- Select2 is now bundled with the plugin and loaded only on the Scalability Pro settings screen, rather than from a third-party CDN on every wp-admin page
- WordPress's own admin list-table classes (about 118KB of PHP) are no longer loaded on front-end requests
- The Indexes tab now looks up the table list once per request rather than once per index definition
- The terms UNION optimisation now detaches itself after running instead of inspecting every remaining query in the request
- Admin CSS and JavaScript are now versioned by plugin version rather than the current time, so browsers can cache them
- Settings import now caps the number of query alterations and normalises their keys
- The slow query log CSV export now neutralises spreadsheet formulas in exported values
- Fixed the cached author counts option disabling itself after an unrelated WordPress update. If it does disable itself, the reason is now recorded for support
- Fixed the "Mine" and "Sticky" filter links disappearing from the Posts and Products lists when cached author counts was enabled
- Removed an unused performance profiler and its AJAX endpoint. Performance profiling now lives in its own plugin, Super Speedy Performance Analyser
6.26.624 July 2026
- Updated super-speedy-settings (shared across all Super Speedy plugins): added a settings-version report to the licence-check and download requests for better licence and update-download debugging
6.26.523 July 2026
- Fixed the file cache handler initialising the WordPress filesystem on every request at plugins_loaded - on hosts where WordPress cannot write files directly (FTP/SSH credential hosts) this echoed the WordPress connection-details form into every page load, WP-CLI command, cron run and REST request. The filesystem is now initialised only when a cache method is actually used, and the credentials prompt has been removed entirely (if credential-less filesystem access is unavailable, file caching is simply reported as unavailable and callers fall back to other cache storage)
- Fixed a potential fatal error in the cache handler when the filesystem could not be initialised (cache methods now fail gracefully instead of calling methods on a null filesystem object)
- Fixed cache expiry never being detected on read - the expiry timestamp comparison compared a number against a date string, so expired cache files were still served until the cleanup cron removed them
- Thanks to @CraigM for reporting the filesystem initialisation issue with a superb writeup
6.26.420 July 2026
- Updated super-speedy-settings to the latest version
6.26.318 July 2026
- Updated super-speedy-settings to the latest version
6.26.210 July 2026
- Updated super-speedy-settings refreshed the Super Speedy settings page with new plugin and service-panel icons (shared across all Super Speedy plugins).
6.26.110 July 2026
- Updated super-speedy-settings (shared across all Super Speedy plugins): re-enabled TLS certificate verification on the licence/update check, escaped all dynamic output in the admin licence table, and added a capability check to the licence recheck handler.
6.263 July 2026
- Fixed the "Cache author counts" optimisation (WP Admin tab) which had silently stopped working after WordPress core updates - the internal WP_Posts_List_Table snapshot it relies on is now re-synced to the current WordPress version, so the cached per-author post counts on the Posts screen work again
- Security escaped all admin settings form values and added a sanitisation callback for the plugin settings option, so no stored value can be rendered unescaped on the settings page
- Security re-enabled TLS certificate verification on the licence/update check (it previously accepted any certificate, allowing a network attacker to spoof the licence server); this lives in the shared Super Speedy Settings framework so it applies to every Super Speedy plugin
- Hardening: added direct-access guards to several include files, switched the post-count cache lookup to a prepared statement, and removed a duplicate internal helper function
- Added deterministic tests covering the list-table snapshot so future WordPress updates that would disable the author-count cache are caught automatically
6.252 July 2026
- New the Super Speedy Listings add-on is now available to download for customers with an active licence - it builds optimised archive tables for dramatically faster author, taxonomy and filtered archive queries. See the Add-ons section below.
- Fixed the "Change main query to use EXISTS rather than LEFT JOIN" experimental optimisation which wasn't working in some cases
- Fixed the file-cache capability check passing setCache() arguments in the wrong order, which created a stray "This is a test." folder in the cache directory instead of writing/cleaning up a proper test file
- Added a .tests test suite (WP-CLI eval-file unit tests per addon plus a WP_Query SQL-capture integration tier)
6.242 July 2026
- Fixed bug in Remove Image Sizes Globally where size deregistration ran unconditionally with a hardcoded keep-list even when the feature was not configured, causing theme and plugin image sizes to be silently removed
- Fixed lingering cron event - wpisp_performance_daily is now cleared on plugin deactivation
- Fixed duplicate query filter registration in the post count cache handler
- Fixed the Remove Image Sizes selector visibility check so it correctly hides when the Global option is already configured
6.2320 May 2026
- Added a "Recheck Licenses" button above the licence table on the Super Speedy Settings page so customers have a clear way to refresh licence status after a renewal or upgrade without scrolling down to the licence-key field. The button is disabled until a licence key is entered/saved and re-enables as you type.
- The Recheck flow now also force-bypasses the auth-server's own 1-hour licence cache (via a
force=1flag on thewpiapi/check_product_keycall), so renewals/upgrades that completed less than an hour before a recheck no longer show as expired/exceeded. Normal admin page loads continue to use both caches as before — only an explicit Recheck click bypasses them. (Lives in thesuper-speedy-settingssubmodule, so the change propagates to every Super Speedy plugin.)
6.2213 May 2026
- Security added capability checks and nonces to every admin AJAX endpoint that was previously reachable by low-privilege or unauthenticated users (slow query log fetch, index create/drop/drop-all, symlink create/delete, wp-config rewrite, slow query log truncate, term recount, profiling results save, cache clears, settings export/import, CSV export, action scheduler maintenance, and the WP All Import diagnostic helper)
- Security removed
wp_ajax_nopriv_*registrations from the slow query log fetch and the post-count / author-count cache clear endpoints — these were admin-only operations that should never have been exposed to unauthenticated visitors - Security escaped every column rendered in the Slow Query Log admin table (
time,url,query,stacktrace,duration) — prevents stored XSS via a poisoned slow-query log entry being executed when an admin views the tab - Security fixed the "Create symlink" button, which previously created a dangling
wp-content/db.php(the source path the button used had never existed in the plugin) and would have fatal-ed the site on the next request; the slow-query drop-in (db.php+profiling-queries.php) has been moved intotabs/slow-query-log/wp-content/to match the path the button always expected, every readlink check across the tab now derives the path fromplugin_dir_path(__FILE__)so it works regardless of the plugin's installed folder name, and the symlink source is validated withis_file()/realpath()before linking - Refactored: the slow-query-log drop-in files now live under
tabs/slow-query-log/wp-content/so the tab is self-contained ahead of the planned split of each tab into a separate add-on plugin - Security hardened
spro_search_terms(product attribute search) — requiresedit_productsand null-checks the taxonomy so PHP 8 no longer fatals on an unknown taxonomy
6.2112 May 2026
- Fixed possible infinite recursion in the license error handler:
wp_error_addedcallback in Super Speedy Settings re-added the same WP_Error without unhooking, causing a stack overflow whenever another plugin (e.g. a GitHub update check) triggered a WP_Error with a JSON body containing amessagefield; the handler now unhooks during mutation, skips errors already enhanced, and only enhances errors originating from superspeedyplugins.com when the source URL is available
6.2023 April 2026
- Fixed Drop All Indexes on multisite subsites dropping indexes across every subsite instead of only the current one
- Indexes button now reads "Create All Indexes" when no indexes are selected, and "Update Active Indexes" when one or more are selected; "Create All Indexes" now creates every index regardless of checkbox state
- Promoted the existing Drop All Indexes link to a proper secondary button so it is visible whenever any indexes exist
- Checkboxes now update live as each index is created or dropped during Create/Update, and the Create/Drop buttons swap visibility automatically when the index set becomes empty or non-empty
6.1924 March 2025
- Added new option for remove SQL_CALC_FOUND_ROWS to let users replace the max number of pages with the word 'many' or a word of their choice
- Added new index to support author counts on author archives for Yoast and other uses of get_post_counts with author filter
6.1815 December 2025
- Added new WP All Export optimisation for when editing exports to speed up or avoid the wp_postmeta scan to grab all postmeta keys
- Added preview and customizer check for "Remove OR check for private items on front end" optimisation
6.1718 November 2025
- Added full namespacing for plugin update checker to prevent conflicts with 3rd party plugins = 6.16 (22nd October 2025)
- Merged stop-phone-home functionality including fixes for paypal & stripe = 6.15 (22nd October 2025)
- Rollback to 5.94 + bug fixes added from other feature branch (but other major new features and implementation pattern removed for further testing)
5.9417 March 2025
- Fixed issue with latest WordPress and our tabs system for the settings page
5.9310 March 2025
- Changed "Remove product cat dropdown" option to "Cache product cat dropdown" - now your quick edits will continue to work. Cache clears after 4 hours by default.
5.927 March 2025
- Update for stop-phone-home functionality - now it won't run on ajax calls or for non-admins to guarantee it only helps admins
5.915 March 2025
- Refactored plugin to be easier to maintain and update and add individual features
- Fixed 'woo onboarding' speed boost
- Further refactoring to move functionality into their own files to make the structure more logical
- Added new feature to let users disable the HTTP API calls that can add 10s to admin pages
- Renamed the tabs to be clearer
- Added custom query alteration options to start and stop various query optimisations on wordpress hooks - I'd appreciate feedback on this new option
5.906 February 2025
- Updated cache handler to provide getCacheSize and deleteOldItems functions which provide group-specific functionality to aid SSF cache management
5.8920 December 2024
- Fixed warning on settings page for suppressed readlink error
5.8819 November 2024
- Fix for code hardening - hardening had come 2 lines too late, my bad
5.8719 November 2024
- Hardened code for Merchant plugin which is somehow running a query where no statements for the query can be found
5.8630 November 2024
- Fixed warning for missing actionscheduler tables on empty install
5.8527 November 2024
- Fix for new settings to clear the local transient cache when the license key is changed
- Added a new 'recheck now' button on the license key page for when users renew or upgrade
5.8426 November 2024
- Removed unused options indexes - 2 options indexes no longer used as it looks like WordPress finally added them to core
- Added helpful notes for each index to help users decide which ones to install
- Updated to use new version of license checker
- Moved settings page to under the Super Speedy menu slug
- Added link to settings page in plugins list
5.8320 November 2024
- Fixed broken pagination issue found by @rex when remove SQL_CALC_FOUND_ROWS was used
5.8219 November 2024
- More settings warnings fixed
5.8112 November 2024
- Fixed warning from new settings page
5.805 November 2024
- Updated settings page interface - added logo, added context help
- Moved settings page to underneath Super Speedy
- Updated license checker code
- Minor optimisation in SQL_CALC_FOUND_ROWS code
- Updated SQL_CALC_FOUND_ROWS to not run for REST API requests - note: this will be reintroduced in future, but with a better solution. REST API calls tend to fetch page after page, so in their case, I could allow SQL_CALC_FOUND_ROWS on the first call, then cache the total count for page 2+ so that REST API exports would be faster
5.7922 October 2024
- Fixed remove group by option so that it ONLY applies to that dropdown
- @hakan found that filtering the wp-admin > product list by category was broken unless the cat was a top level cat
5.7822 October 2024
- Fixed broken RECOUNT TERMS button from Imports tab
- this also fixes the overnight term recount
5.7721 October 2024
- Hotfix for pagination page 1!
5.7621 October 2024
- Fixed bug in remove SQL_CALC_FOUND_ROWS - was breaking with certain configs on page 2+ and then restricting total pages to only 2
- Minor fix for wp-admin > Remove Woo Products Category List - now correctly returns top level at least
5.7518 October 2024
- Updated remove group by option to work properly with Super Speedy Search
5.7417 October 2024
- Fixed the remove product category hierarchy option in wp-admin > products list view
5.734 October 2024
- Removed some unused code
5.723 October 2024
- Improved the fake pagination so that found_posts doesn't overrule a small set of returned items
5.713 October 2024
- Removed fake 'Next Page' button from admin screens - no longer required, new code properly fakes pagination here too and is far more resilient
5.703 October 2024
- Hotfix for yesterday's release - fix for remove SQL_CALC_FOUND_ROWS for admins
- I broke the 'remove SQL_CALC_FOUND_ROWS' for admins
- this code is being refactored so that it can be specified more granularly, e.g. for specific admin pages, or for specific parts of admin pages loading
- similarly for the front-end, e.g. apply to nav menu, sidebar, main query, main content, footer, or even more specific than that using hooks and priorities
5.6929 September 2024
- Upgraded the Remove Row Count feature
- limits itself to running against post queries with < 10 rows requested
- transforms news and magazine sites or those with mega menus where you have a dozen or so short queries for posts on your various pages
- added similar code to the Admin version of Remove Row Count
- we're seeing newpaper page load speeds drop from 12s to 1.4s uncached
- Added new tagDiv recent posts indexes for these newspaper websites
5.6823 September 2024
- Fixed bug in GROUP BY optimisation where it wasn't matching unless the GROUP BY was in uppercase
- Fixed issue with NEXT PAGE not appearing on product search results if SQL_CALC_ROWS has been removed from admin pages (to remove matching counts)
5.679 August 2024
- #164 - Fixed missing pagination at media library
5.668 August 2024
- Improved the Remove Group By option
- if WP_Query selects columns from only wp_posts and does not join to other tables, we remove DISTINCT and GROUP BY for extra speed
- if WP_Query joins to other tables, but still only selects columns from wp_posts, we swap GROUP BY for DISTINCT to remove the extra sort operation
- improved it so it's no longer called experimental, it should be safe in all cases so long as no plugins rely on items coming back in ID order for some reason
- also improved it so that it catches more cases
- Added new SPRO_ALLOW_NAV_MENU_ITEMS_FILTERS definition
- this is since I found that nav_menu_items tends to have suppress_filters applied
- if you have huge nav menus and you find in Query Monitor that these are behaving slowly, add define('SPRO_ALLOW_NAV_MENU_ITEMS_FILTERS', true); to your wp-config.php
5.6523 July 2024
- Added Export CSV button to Slow Query Log
- Fixed broken scrolling in Slow Query Log
- Updated JS for license checker - it had been affecting wp-admin overlays which heavily use JS to manipulate the DOM
5.6420 July 2024
- Updated slow query log profiling to improve handling when wp-config.php cannot be edited
- for best results with the query profiling, make sure you have the db.php symlink in place and wp-config.php edited
5.6311 July 2024
- Fixed warning on plugins page caused by new settings upgrade
- Added better messaging for invalid, expired and exceeded licenses
5.6210 July 2024
- Hotfix for settings upgrade from yesterday
5.619 July 2024
- Fixed warning message being output for query profiler if a query did not have a start time
- changed the global variable name for the start time to make conflicts from other plugins impossible
- Updated license checker to use new faster version
5.6020 June 2024
- Added new SPRO_SQL_CALC_ROWS_FINGERPRINT definition to defines.php to allow users to decide additional WP_Queries which should have SQL_CALC_ROWS removed from the query
- Customer was using TagDiv Composer library to build their website and with 8 blocks on their page, this was adding 0.1s, 0.8s to the page generation
- by adding a fingerprint definition into their wp-config.php with this new option, those blocks have SQL_CALC_ROWS removed and speed of those queries becomes instant
- e.g. define('SPRO_SQL_CALC_ROWS_FINGERPRINT', array('td_data_source::get_wp_query', 'td-cloud-library')); // we normally only remove SQL_CALC_ROWS from the main query, but if you add stack-trace fingerprints in here, we will remove that from other queries too
5.594 June 2024
- Added sort order removal compatibility with WooCommerce Product Recommendations plugin
5.5831 May 2024
- Fixed issue with identifying and deleting cancelled/canceled scheduled actions in woo - they use the american spelling
5.5723 May 2024
- Added new filter spro_num_pages which takes $num_pages (default 100) and lets you return a different number for when we fake pagination
5.5622 May 2024
- Removed Prev Button from edit.php and changed code to only operate on page 1
- the regular pagination reappears on page 2 anyway, this approach keeps page 1 of edit.php fast but you can still access pagination
5.5522 May 2024
- Added bulk edit issue for cached table based on https://github.com/superspeedyplugins/issue-tracker/issues/134
- Added pagination to orders and products for prev next pagination based on https://github.com/superspeedyplugins/issue-tracker/issues/122
5.5415 May 2024
- Re-introduced the defer term counts option on the imports tab
- it provably still does speed up imports
5.5314 May 2024
- Fixed a bug in the new transient cache where with some db configs it could keep on redefining the table
5.5211 April 2024
- Updated stored reference list tables from WP updates
- hopefully this doesn't need to happen too often, maybe I could just reference the constructor of the parent somehow to run the hash check
5.5110 April 2024
- Fix for file based cache for cases where permissions are completely lacking
5.504 March 2024
- Added new file based transient cache with groups capability and expiration built in (and it's fast of course!)
- the first user of this is Super Speedy Filters, but there could be many benefits here to bypass certain transient groups being wiped when products are updated/created/deleted or when other posts/orders are edited
5.493 March 2024
- Improved functionality of our own custom transient cache
- new delete_group and delete_transient functions added
5.4815 March 2024
- Added deactivation hook to drop indexes when plugin deactivated
- this will revert the database to exactly how it was before installing and doing anything with scalability pro
- it will also make it clearer for people who activate > create indexes > deactivate and then are comparing before & after since with the indexes there, it would appear to be closer in speed
- Added reference copy of Class WP_Posts_List_Table and WP_List_Table and hash check on wp version change etc to be able to tell if the constructors change
- if it changes, the author post count caching will be disabled to preserve whatever functionality changed in this constructor
5.4720 February 2024
- Removed Import > "Defer term counting" option based on https://github.com/superspeedyplugins/issue-tracker/issues/49
- Added option WP Admin > "Disable WooCommerce Marketplace Suggestion" based on https://github.com/superspeedyplugins/issue-tracker/issues/41
5.4620 January 2024
- Rebuilt image size remove funcitonality via new class based on https://github.com/superspeedyplugins/issue-tracker/issues/29
- Added author posts count caching functionality based on https://github.com/superspeedyplugins/issue-tracker/issues/40
5.4517 February 2024
- Changed plugin definition name to avoid conflict with Easy Accordion Free plugin
5.4410 January 2024
- Version number bumped for new deployment system test
5.4322 November 2023
- Moved all 'query' filters into special handlers to ensure they only run when required, e.g. when cron, when is_admin, or when front-end depending on the filter
- Fixed slow query log - it was still possible for this to be running on every query
- Removed code that was spoofing the new install and has_products
- this is instead replaced by our own post count cache
- the previous method of spoofing 1 item for each post_status was being cached and used elsewhere where it wasn't useful
- this method guarantees accurate and sensible counts
- the cache is only wiped at night time, so you can import all day without the posts being recounted
- Added a new Clear Cache button to the Imports tab next to the defer term counting option
- Changed Settings plugin name to just Scalability Pro (rather than Scalability Pro Plugin) *
- TODO:
- Add button to enable all recommended options
- Remove initial install override
5.4221 November 2023
- Updated plugin updater to look at superspeedyplugins.com
5.4121 November 2023
- Fixed bug in check_license code - one path was not caching the result properly
- Improved speed, reduced use of 2x 'query' filter code so it only ever runs on get_posts, not on all get_results queries
- Improved speed of Fix Woo Onboarding slightly by checking for pattern in more efficient way
5.4015 November 2023
- Optimised use of $e->getTraceAsString() so it gets called far less often
- using this tracestring is one reliable technique to discover the originating function for bad SQL
- I optimised this by first checking for the SQL pattern at the start of the SQL string
5.3915 November 2023
- Added new SPRO_PREVENT_WPAI_DUP_CHECK definition
- setting this to true can help speed up WP All Import if you have large imports
- this seems to be dependent on your config for your 'unique key' which is normally automated
- Fixed bug with fixing Woo Onboarding code
- the has_products function was fixed previously, now the is_new_install is properly fixed
- previously the fix had only been added to some admin pages, this fix now stops that slow code running on WP All Import batches too
- Altered wp-admin > Optimise Woo products list to instead Remove Woo Product Category dropdown
- the code previously altered the code to only list the first level of categories, but was no longer working
- now this code just removes that dropdown completely
- with the recent update to Super Speedy Search you can search for categories instead
- Improved Slow Query Log so it captures info more reliably
- Fixed bug that prevented slow query log running if no db.php existed
5.3814 November 2023
- Added Empty Log Table button
- Improved Slow Query Log so it captures info more reliably
- Fixed bug that prevented slow query log running if no db.php existed
5.3720 October 2023
- Added 2 hour transient cache for reading changelog files from our server
- this will speed up wp-admin slightly and prevent the 403 forbidden error messages some have been getting when trying to run plugin updates
5.3619 October 2023
- Removed action that was running after WP All Import completed
- this was recounting ALL terms which was causing issues with some customers
- underlying recount function has been further optimised to reduce RAM usage but will complete as expected nightly, not after each import
5.3519 October 2023
- Updated &spro_show_import_queries=1 option to help debug slow WP All Import jobs
- this will now output to screen whatever was supposed to be sent through json
- KB article created to guide advanced users through this https://www.wpintense.com/knowledgebase/how-to-use-scalability-pro-to-debug-slow-wp-all-import-speeds/
- Discovered new index required for sku lookups with WP All Import, otherwise table scan against their lookup table happens
5.3413 October 2023
- Option to cache post counts for admin pages created
- this has been separated out from defer term counts as a separate option, but it's still in the import tab because it helps most with admins running imports a lot
- option has also been updated to exclude shop_order post types from the cache since order statuses change frequently and admins need to see what items remain to be done
5.3311 October 2023
- Hotfix for recent optimisation which could create duplicates in archives
5.329 October 2023
- Improved the remove DISTINCT/GROUP BY code further
- more performance if querying against only wp_posts
- especially more performance if the query can now use an index for sorting, e.g. order by date desc
5.314 October 2023
- Added new define option SPRO_ALWAYS_DO_TERM_RECOUNTS
- defaults to array('nav_menu', 'link_category', 'post_format', 'wp_theme', 'wp_template_part_area', 'elementor_library_type', 'elementor_library_category')
- this means even when 'defer term counts' is enabled, these taxonomies will always be recounted on-the-fly rather than waiting until overnight
- if you want to use defer term counts but there are some taxonomies you wish to have up to date at all times, you can copy the definition from our defines.php to your wp-config and add extra taxonomy names to it
5.3026 September 2023
- Fixed warning that was occurring on FSEs
5.2918 September 2023
- Hardened symlink checker for slow query logger so it doesn't raise warnings
5.2817 September 2023
- Fixed bug in switching off slow sql profiling
5.278 September 2023
- Fixed removal of symlink to clear the opcache if in use, this means when QM's symlink is put in place it then properly uses Query Monitors symlink
- Added new URL param spro_show_import_queries=1 which can be used with the wp-all-import processing URLs to view the queries with Query Monitor for a batch of rows imported
- e.g. call http://localhost/wp-load.php?import_key=OxdAHmoD&import_id=19&action=trigger and then:
- call http://localhost/wp-admin/?import_key=OxdAHmoD&import_id=19&action=processing&spro_show_import_queries=1
- note the alteration of the URL to not use wp-load and instead load your dashboard, and then with spro_show_import_queries=1
- this clones the wp all import processing function but with send_json removed
- this means you can see all the DB activity performed by WP All Import through Query Monitor!!
5.266 September 2023
- Fixed bug in new symlink feature for slow query profiling which affected my dev multisite install
- apparently $wpdb->prefix can be empty when get_site_ids() is called
- Fixed major bug in new db.php $wpdb class override
- to save the profile, i was using wpdb
- this meant subsequent actions like $wpdb->last_results would return the last result of my insert statement, i.e an empty resultset causing product archives to be empty!
- this only happened on dev, 5.25 was not released to the public
- Added clear action scheduler logs button to the Imports tab by customer request
- this probably will not help improve performance much unless something somewhere is reading from these logs
- Fixed missing array keys warning for upgraded scalability pro
5.255 September 2023
- Added new symlink feature for Slow Query Log tab
- this symlinks db.php to point to our db.php which will allow us to capture queries which run before the 'init' hook
- this also updates wp-config.php to contain our $SPRO_GLOBALS variable for the same purpose
- Improved layout of Slow Query Log output
- Added Query Pattern field to Slow Query Log tab
- you can place regex in this field and it will add matching queries to the Slow Queries table so you can see the stack trace and find the source of problematic sql
5.2422 August 2023
- Added new detection of unnecessary GROUP BY when LIMIT 0,1 is being used
- this seems to happen in imports and causes a table scan of wp_posts, so this should result in a good boost for imports on large sites
- Added further improvement for 'defer term counting'
- when a new item is published, that post types cache is wiped
- this leads to slower imports since an entire recount can happen after every import
- The change has modified this query to fetch data from our own cache table which stores the counts for 24 hours if you enable the defer term counting option
- Added Optimize Product Attributes Lookup functionality to the Imports tab
- WooCommerce maintains the product attributes table EVEN IF you deselect to use it
- One outstanding issue here on larger sites is the SQL where they check WHERE product_id = 984353 OR product_or_parent_id = 984353;
- only the product_or_parent_id needs to be checked in this case and then an index gets used
- This functionality alters this SQL query if you enable the option on the Imports tab
5.2322 August 2023
- Added individual index control
- unused Notes column will be upgraded in future to provide links to articles about what this index can do
- notes column will also be used for customers who have the ability to enable the performance schema - this will allow you to discover which indexes do nothing for your install
5.2217 August 2023
- Slow Query Log tab reintroduced
5.2115 August 2023
- Fixed bug in new update system where license key was not being passed properly to secure download link
5.2011 August 2023
- Fixed many warnings for brand-new users if they are displaying warnings on screen - these were just warnings about missing settings which went away if you saved the settings but anyway, they are now fixed
5.1911 August 2023
- Fixed some warning messages on the import tab & fixed another warning in the update checker
5.1810 August 2023
- Hotfix for new updates system - if your server was configured to disable remote URL requests, a critical error was happening upon upgrade. This has been fixed with a warning message that you cannot check for updates.
5.174 August 2023
- Upgraded main settings page to show changes since last update
- added update count to menu to help users notice
- Added links to all plugin docs and support areas in the settings page
5.1626 July 2023
- Upgraded updates sytem so it uses JSON and gets zip file from license-key-checked URL
5.156 July 2023
- Fixed warning for new slow query log code
5.146 July 2023
- Fixed warning against missing 'sizes' key in $data passed to wp_get_attachment_metadata filter - not sure why this would ever be missing but apparently it can be
5.136 July 2023
- Minor visual fix for slow query log query container (max height then scrollbar)
5.126 July 2023
- Added Slow Query Log tab
- this uses a lightweight technique to capture slow queries
- slow query log defaults to off, query duration is defaulted to 0.5 seconds, but you can adjust this in the slow query tab
- this slow query log will not yet capture timedout queries since after a timeout the code does not continue to run - current solution is to increase your server page timeouts so you can capture these (e.g. in your dev/staging environment)
- slow query log captures the query, the stack trace and the URL from whence the slow query originated
- a future version will allow users to submit their slow query log to WP Intense to help us with figuring out what to optimise next
- new definition can be overridden in your wp-config.php, defaults to: define('SPRO_MAX_TRACE_CHARS', 10000); - this affects captured query length and captured stack trace length in characters
5.1122 June 2023
- Fixed bug in reducing storage of action scheduler items
- Added new Beta SPRO_CACHE_PMXE_META_KEYS option
- to enable, add define(SPRO_CACHE_PMXE_META_KEYS, true); to your wp-config.php
- when exports start with WP All Export, it counts the unique meta keys in your table
- on large sites, this can be a pain
5.108 June 2023
- Added action scheduler optimization option to the Imports tab
- WooCommerce uses this heavily when updating products and when the _actions table gets heavily populated I've seen an extra 1 second per product for imports which is incredibly slow
- Enabling this optimization option will cause the action scheduler to clear out completed items daily instead of every 30 days
- Added a button to manually clear the action scheduler table
- this safely deletes all actions with status of 'cancelled', 'completed' and 'failed'
5.097 April 2023
- Improved speed of 'Remove check for private items' option - moved it from the 'query' filter to the pre_get_posts filter - this reduces CPU usage on sites with high query counts
- Fixed 'Remove Sort Order' and 'Remove SQL CALC ROWS' options so that they operate on taxonomy langing pages as well as filtered archives
- Added new Ajax search capability for when editing a products attributes - helps if you have a lot of terms
- We had a client with 100,000+ terms in an attribute (artists of a song)
- WooCommerce loads all 100,000+ of these artists into the HTML select box on the Edit Product page
- this makes the initial page load very slow AND it makes the page react really slowly because there is so much HTML for the browser to process
- the new option here transforms that dropdown into a box which shows the first 10 then you can search to find others
- Added fix for WooCommerce onboarding - this speeds up wp-admin on our foundthru site from 10s to 1s in most cases, and from 70s to 1s in some cases!
- Woo Onboarding uses the has_products function which for some stupid reason performs a table scan
- this check IS cached, but if you edit any products and/or are performing imports then this cache would be wiped and you'd be immediately back to slow performance
- we have added a separate 24 hour cache so that even if you are running imports this simple check for has_products() will be intercepted and return true
- Added new Import Tab option to reduce the number of image sizes generated
- by default, WordPress creates images in all registered sizes
- this could mean you have 20+ images being generated in different sizes on your server when you upload a single image - this uses excessive disk space and CPU
- this new option adjusts WordPress so only the images you choose get created
- Added new index for use by Rankmath on wp_rank_math_analytics_objects table on object_id - speeds up rankmath analytics
- Added new index on posts on post_modified_gmt
5.0824 January 2023
- Fixed JS bug affecting the new 'Ajaxify term search' option. The search was working, but the wp-admin JS was replacing the option list with the original list. Now searching for terms in huge term lists is very fast.
5.076 November 2022
- Fixed bug with defer term counting which was preventing new menu items being added to brand new menus
5.065 November 2022
- Added option to track creation of wp_scalability_pro_cache table rather than checking information_schema.tables every page load
5.054 November 2022
- Previous fix confirmed - updated settings page to instruct users to add define('SPRO_FIX_WOO_ONBOARDING', true); to wp-config.php if they wish to test this option
5.044 November 2022
- Replaced new onboarding option temporarily with define('SPRO_FIX_WOO_ONBOARDING', false);
- change this to true in your wp-config.php if you wish to try it, we're seeing memory issues in multisite for some reason
5.034 November 2022
- Added manual garbage collection to clear stack trace variable used to check query origin
5.024 November 2022
- Added BETA option SPRO_REDUCE_IMAGE_SIZES
- this reduces how many image sizes you import
- to try it, please add the following to your wp-config.php file: define('SPRO_REDUCE_IMAGE_SIZES', true);
5.014 November 2022
- Fix for slow WooCommerce onboarding code
- this eliminates slow code that relies on wp_cache.
- wp_cache gets wiped whenever products get edited, added, deleted.
- That means, this should massively speed up imports.
- Related article: https://www.wpintense.com/2022/11/04/speeding-up-woocommerce-7/
5.0020 October 2022
- Further upgrade for Remove Sort Order - it now defaults to only removing sort order from the Product Query since typically you want the latest posts to arrive
- to override this, if you wish, please copy the define('SPRO_REMOVE_SORT_ORDER_POST_TYPES', array('product', array('product', 'product_variation'))); from the defines.php file to your wp-config.php file and add extra post types to the array as you wish
- Fixed broken index count - index was being created, but was not being counted because of UNIQUE constraint on wp_options (option_name)
4.9919 October 2022
- Added new feature from @ifrountas request to ajaxify the attributes/taxonomies on post.php and post-new.php
- this means if you have 30,000 terms in your taxonomies (e.g. authors, artists) then edit your posts will no longer be slowed down by this unwieldy select box
4.9819 October 2022
- Added update for new creations of options index to make it unique on options_name (SSS will also fix this as it's the plugin that requires it)
4.9718 October 2022
- Fix for Remove Sort Order so it doesn't affect wp-admin stuff, orders, products etc
4.9613 October 2022
- Added new semi-permanent cache for months and other cache from VIP code - ugosprint found when running imports, the regular WP cache is constantly being flushed so updating orders was taking 30 seconds as a result
4.9513 October 2022
- Fixed override for removing pagination on back-end edit.php - the options object was not checked properly
- Added permanent override to remove unneeded DISTINCT which was causing table scans on posts_clauses - if LIMIT = 0, 1 or LIMIT = 1 then remove DISTINCT since it's not required and will cause a table scan - this is applied across all $wpdb queries
- 2 new indexes on WP All Import.pmxi_posts which speeds up large imports quite a bit
- Fixed the wp_posts.post_title index - this was why index counts were sometimes wrong on some setups and it kept telling you there was one more index to create
- New index on wp_actionscheduler_actions - I've been seeing a LOT of slow activity on this newish table once stores get larger. Speeds up CRON in particular and reduces background load on the server.
4.9412 October 2022
- Upgrade and fix for defer term counts - speeds up imports for all post types, not just products, product import speed also boosted with this upgraded technique
4.935 October 2022
- Added override for remove pagination on front-end if post_type empty or post_type = 'course' for compatibility with LifterLMS dashboard which expects the rowcounts and bails infinitely if the rowcounts are not there.
4.923 October 2022
- Finally found the real issue - there was an uncommitted change in SSS to overrule Spro sort order and there was an incorrect rule to only remove sort order for products, and the check for main query had been removed. All fixed.
4.913 October 2022
- Final hotfix update to fix the 'remove sort order' option. Was removing relevancy and also was not respecting the actual option setting.
4.893 October 2022
- Further update to remove redundant removal of sort order, now just rely on clauses filter
4.883 October 2022
- Minor update for priority of code to remove sort order to move it slightly earlier to ensure the SSS RELEVANCE order runs after it
4.8729 September 2022
- Fixed Remove Sort Order option - it was not correctly removing the default sort order from the products archive. It should only remove the sort order if there is no URL orderby parameter to override the default.
4.8614 September 2022
- Fixed error on settings page related to profiling table (profiling table removed, there will be an integration with query monitor in near future)
- Added new option for SQL_CALC_ROWS on edit.php which can massively help speed up those pages for users with 10000s of posts/products/pages/cpts
4.8511 August 2022
- Fixed warnings that were appearing relating to new options to cache best-selling and other 2 shortcodes
4.8412 July 2022
- Added new index on wp_posts (post_title) - discovered this is required for Smart Coupons to stay scalable on large websites. Covered in this article: https://www.wpintense.com/2022/07/07/how-to-use-query-monitor-to-analyse-wordpress-performance-problems/
- Fixed bug which was constantly showing that 1 more index is required to be created if you don't have WP All Import installed (we add 5 indexes for WPAI)
4.837 June 2022
- Added optimisation for sites with lots of media files - two expensive queries that occur on every page load of wp-admin are now cached for 1 day. These queries just fetch the month/year for available media files. On client site with 300,000 products and related media, this eliminates 10s from wp-admin.
- Added optimisation for WooCommerce onboarding where they continuously check for existence of something in the database, but for some reason they sort the results. I removed the sort operation to make this return instantly, no need for caching. On foundthru, this eliminates 70s from wp-admin.
- Added optimisation for bulk editing items - now defer term counting is switched off for bulk editing - may potentially add further optimisations here - e.g. to queue up actions added to save_post such as third-party server based stuff like CRM, email, updating stock on Amazon etc
4.8223 May 2022
- Improved Optimise Group BY option so that it applies far more often and changes the query to SELECT DISTINCT instead of select X, ...., GROUP BY posts.ID
4.814 March 2022
- Removed error logging from 4.80
- Improved code surrounding detecting custom sort order to bypass this rule - this is to allow users to choose a sort order in the shop archive (e.g. sort by price) and it will work always for all themes
4.804 March 2022
- Remove sort order now fully restricted to 'products' to avoid showing articles in the wrong order - this depends on your database config whether this would have been an issue. If a sort is added to the URL, sorting will operate as normal.
4.7923 February 2022
- Further fix for 'remove sort order' option to ensure it doesn't affect admin pages
4.7811 February 2022
- Fixed warning that was appearing on super speedy search results for scalability pro
4.7728 January 2022
- Fixed the 'remove sort order' option - it was previously overruling some pages that it shouldn't - it definitely only affects the main query on the front end now
- Sort option also disabled if ?orderby parameter in the URL
- Sort option confirmed compatible with super speedy search RELEVANCE scoring
- Fixed multisite compatibility for creating indexes
4.7617 December 2021
- Altered the update checker to use Bitbucket instead of my own server
4.7517 December 2021
- Upgraded the update checker - checked the two errors that I fixed earlier are fixed in the update.
4.7417 December 2021
- Hardened plugin update checker - an error was occurring if the wpintense json file was not available
4.7315 December 2021
- Added 3 new indexes for the new way WP All Import performs image lookups
4.7210 November 2021
- Merged old items into core
4.714 November 2021
- Added scalability fix for order admin issue caused by the Order Delivery Date plugin
4.702 November 2021
- Added index to wp_options on name - found in perf analysis that this is actually a very frequent SQL pattern and when > 2000 options exist it starts to get noticable
- Added index to wp_comments to assist with admin area where comment counts are counted by comment type
- Added count users cache for wp-admin order admin speed boost - it's only used to display a dropdown in the list orders screen (and possibly other screens)
- Refactored how indexes are created - paves the way for selective indexing in future
4.6922 October 2021
- Hardened code to avoid fatal warning at end of overnight cron job if WooCommerce not installed - checks for existence of wc_recount_all_terms - was not affecting anything other than creating an error in debug.log
4.689 September 2021
- Added optimisation for WCFM Multivendor marketplace - the query they have to generate the STORE filter is not scalable, made scalable with this update
- Added 2 indexes to support improved query for WCLOVERS WCFM Multivendor Marketplace plugin - wp_usermeta.wpi_wclovers_wcfm_marketplace_usermeta and wp_users.wpi_wclovers_wcfm_marketplace_users - even just 6000 entries in wp_usermeta (10 users) is enough to add 0.5 seconds to page load, but with this index + query alteration the same query is 0.003 seconds
4.673 September 2021
- Added settings control over the option to remove OR post_status = 'private' to front-end queries. Doing this can speed up WP_Query in some cases. Using this option will stop private items displaying on your front-end.
4.6631 August 2021
- Altered code that removes check for private posts to never run on wp-admin pages
4.6530 July 2021
- Fixed bug that occured with 'CHANGE TAX TO EXISTS' when no tax exists
4.6412 May 2021
- Minor PHP notice warning removal
4.6312 May 2021
- Import speed boosted significantly - https://www.wpintense.com/2021/05/12/speeding-up-wp-all-import-imports-using-scalability-pro/
- Improved Defer Term Count code to speed up imports
- Added wc_lookup_sku index for product lookups against the sku (used by more than just imports, so speed boosts elsewhere too)
- Added wpallimport_sku to speed up imports when checking to see if item already inserted
- Added wpallimport_guid to speed up imports
4.6230 September 2020
- Added new WPI Settings page where users can enter their license key to enable plugin updates
4.6122 June 2020
- Added multisite compatibility
4.60 Beta1 May 2020
- Prevent query alterations for cron and ajax where the order of results may actually matter for functionality
- Improved removal of GROUP BY when group by not needed - gives speed boost in some cases
4.59 Beta16 April 2020
- Changed mechanism for the 'WHERE NOT EXISTS' option to make it work with all taxonomies and multiple taxonomies (previously was disabled and when enabled it only handled 1 taxonomy) - this optimisation helps in many cases but not all - you'll need to test it to check with your data config
4.5831 March 2020
- Added new index on wp_posts on just the guid column. Some themes grab posts directly using SQL against wp_posts and just use the guid. Typically this is when they're grabbing images. They shouldn't do it that way but some do.
4.5727 August 2019
- Fixed bug related to 'removing woocommerce ajax variations count' which improves performance of pages with many variations
- - bug was related to items which didn't have all variations created. Fix was to return at least 1 of the variations which seems to fix the Woo JS code so that it will correctly use Ajax to fetch prices.
4.5616 May 2019
- Updated code to prevent 'sort order suppression' and 'pagination suppression' from running on admin pages
4.5516 May 2019
- Re-added experimental EXISTS option for those users who have already set it and are successfully using it. Full fix coming soon to re-add it to options page.
4.548 May 2019
- Further hotfix for sitemap index
4.538 May 2019
- Fixed sitemap index in cases where somehow the keys were > 1000 characters
4.528 May 2019
- Removed the experimental EXISTS feature as it was causing errors in many cases
4.516 May 2019
- Altered the plugin update checker to use the latest version and avoid warning message.
4.5012 April 2019
- WHERE EXISTS experimental option now fixed - if all 3 wp_query options set, dogs category on foundthru is 0.0009s
4.491 April 2019
- Swapped out use of dbDelta to use generic CREATE statement instead since it seems there is a bug inside WordPress core - https://wordpress.stackexchange.com/questions/141971/why-does-dbdelta-not-catch-mysqlerrors/141984
- Removed the .js file from front-end as it's not yet needed
4.4828 March 2019
- Bumped version number to help customer
4.4728 March 2019
- Removed row-level caching from WooCommerce->Orders (needs bugs fixed)
- Added caching table for better performance than using transients
4.464 March 2019
- Added caching table for use by wp-admin views
- Added row-level caching to WooCommerce -> Orders
- Added row-level caching to wp-admin -> Products
- Removed warnings & notices
4.4511 February 2019
- V minor speed boost when checking for queries related to group BY (mostly around sitemaps)
4.444 February 2019
- Added new index for XML sitemaps - optimises BWP Google XML Sitemaps and Yoast SEO XML sitemap functionality
- Added new filter to optimise paged query for BWP Google XML Sitemaps
- Added new filter to optimise main query for Yoast SEO XML sitemap functionality
4.4310 January 2019
- Removed warning caused by 'beta' check for updates for those who were not on beta program
4.422 December 2018
- Fixed issue with spotting indexes that were created using MySQL 8
4.4117 September 2018
- Fixed product's disappearing on some themes when 'no pagination' option set
4.3711 January 2018
- Improved product listing page speed
4.3611 January 2018
- Fixed 2 errors when object is not defined - was preventing correct operation of 'duplicate product' link (for example)
4.35
- Improved experimental left join
- Improved admin pages and documentation
4.34
- Fixed broken 'sort order' option
- Made experimental LEFT JOIN optimisation (to WHERE EXISTS) far more stable
