AutoBoostSEO Connector

Changelog

5.5.2

  • FIX: Wrap all SQL queries in $wpdb->prepare() for WordPress.org plugin review compliance

5.4.3

  • DEBUG: Public diagnostic endpoint for score filter debugging (temporary)

5.4.1

  • FIX: Low SEO score filter no longer crashes when no posts have been scored yet

5.4.0

  • NEW: Plugin-side SEO score calculation — computes and stores scores as _autoboostseo_score post meta, independent of RankMath/Yoast stored scores
  • NEW: GET /autoboost/v1/scores-status endpoint — returns scoring index status
  • NEW: POST /autoboost/v1/calculate-scores endpoint — batch scores unscored posts (200/batch)
  • IMPROVED: Low SEO score filter now uses plugin-calculated scores for reliable filtering and global sort order
  • IMPROVED: Posts-metadata endpoint now includes _autoboostseo_score in response
  • FIX: SEO scores auto-calculated on post save (save_post hook)

5.3.3

  • FIX: Server-side filter pagination broken on page 2+ (WP_Query applied double offset on post__in results). All filters affected.
  • FEATURE: Low SEO score filter now sorts results by score ascending (lowest first).

5.3.2

  • FIX: SEO stats endpoint now includes pages in addition to posts. Previously only counted post_type=’post’, missing pages entirely.

5.3.1

  • FIX: Posts with the same date now appear in consistent order between paginated and Show All views. Added p.ID DESC as secondary sort to all SQL queries.

5.3.0

  • FEATURE: posts-metadata endpoint accepts limit parameter. Frontend passes tier limit so the plugin stops returning posts early (e.g. 7500 instead of 21094 for Starter tier). Cuts Show All load time by ~60%.

5.2.5

  • FIX: Word count filter now works server-side even without full backfill. Uses COALESCE to treat unindexed posts as 0 words instead of excluding them. No more loading all 21k posts for word count filtering.

5.2.4

  • FIX: Server-side filters with status=any only returned published posts. WP REST API passes status as array [‘any’], not string ‘any’, so the previous string check failed silently. Now uses in_array() to detect ‘any’ in the status array and expands to all allowed statuses.

5.2.3

  • FIX: (Incomplete) Initial attempt at status=any fix — used is_string() check which doesn’t work because WP REST API passes status as an array.

5.2.2

  • FIX: Removed bulk word count auto-compute from metadata endpoint. do_shortcode() on 1000 posts per page was causing server timeouts on large sites, making the fast endpoint fall back to slow 100-per-page standard API.
  • FIX: Reduced backfill batch size from 500 to 50 to safely handle do_shortcode() per post.

5.2.1

  • FIX: Word count now computed from rendered content (shortcodes expanded via do_shortcode before counting). Previously raw shortcode syntax was stripped, causing posts with galleries/embeds/shortcodes to show artificially low word counts. A post that renders as 800 words on the site was counted as ~50.
  • AUTO: Word count index automatically rebuilt on upgrade.

5.2.0

  • FIX: Word count computation now consistent between SQL filter and REST API display. Previously strip_shortcodes() caused server-side word counts to be lower than displayed values, making word count filters return wrong results.
  • FIX: Conflicting filter pairs (e.g. Missing Keywords + Has Keywords) now return 0 results immediately with a clear response instead of running expensive SQL that always returns nothing.
  • FIX: Inverted word count ranges (min > max) handled gracefully on server.
  • AUTO: Existing word count index is automatically rebuilt on upgrade to match the corrected algorithm.

5.1.3

  • PERF: posts-metadata endpoint now computes and stores word counts on-the-fly for unindexed posts using bulk SQL (2 queries per 1000 posts). Word count filtering is now accurate from first use without requiring a separate backfill step.

5.1.2

  • FIX: posts-metadata endpoint now includes the post permalink (link field) so posts are clickable in the app.

5.1.1

  • FIX: posts-metadata endpoint now returns posts ordered newest to oldest (post_date DESC). Previously returned in ID order.
  • FIX: posts-metadata endpoint now fetches posts only (excludes pages) by default.

5.1.0

  • NEW: Bulk posts-metadata endpoint (GET /autoboost/v1/posts-metadata) — returns 1000 posts/page vs 100, using a single optimised SQL query per page. Reduces Show All load time from ~3.5 minutes to ~15 seconds on large sites (21k+ posts). Supports RankMath, Yoast, SEOPress, TSF, and AIOSEO.

5.0.1

  • CLEANUP: Removed dead REST fields (thin_content, long_content, has_schema, missing_schema, reading_time)
  • These fields were never used by the frontend and added unnecessary overhead to API responses

5.0.0

  • MAJOR: All filters now use raw SQL with LEFT JOIN for correct pagination at any scale
  • NEW: SEOPress support (focus keyword, SEO title, meta description)
  • NEW: The SEO Framework support (title, description)
  • NEW: All in One SEO (AIOSEO) full support via wp_aioseo_posts table
  • NEW: missing_title filter (posts with empty titles)
  • NEW: word_count_min/word_count_max filters (requires word count indexing)
  • NEW: comment_count_min/comment_count_max filters
  • NEW: default_seo_title filter now correctly compares SEO title to post title
  • NEW: Word count computed and stored as post_meta on save (backfill endpoint available)
  • FIX: Filters now respect post_type and post_status from request (no longer hardcoded to post/publish)
  • FIX: SEO score filters include unscored posts in low_seo_score results
  • FIX: found_posts filter no longer leaks to other WP_Query calls
  • FIX: filter-debug endpoint now requires authentication
  • FIX: N+1 query problem eliminated via postmeta cache priming
  • FIX: Version constant mismatch between class and define
  • REMOVED: Legacy query handler (class-query-handler.php) — conflicting dual filter system
  • REMOVED: Dead filter params (thin_content, long_content, reading_time_min/max)
  • REMOVED: update_option debug write on every filtered request
  • PERF: NOT IN subqueries replaced with LEFT JOIN … IS NULL (5-10x faster at 100k+ posts)

4.7.5

  • FIX: Raw SQL paginated approach for SEO filters — bypasses RankMath posts_where stripping
  • Runs raw SQL to get only the current page’s post IDs, then uses tiny post__in (20 IDs)
  • Overrides found_posts for correct REST API pagination headers

4.7.4

  • FIX: Replace post__in (17K+ IDs) with posts_where subqueries for large sites
  • Fixes “No matching posts” when filtering sites with many missing SEO fields

4.7.3

  • FIX: SEO filters now check only the ACTIVE plugin’s fields (reverts 4.7.2 all-variants approach)
  • Residual Yoast data no longer causes false negatives when RankMath is active
  • Dashboard seo-stats endpoint now uses raw SQL (consistent with REST filters, bypasses WP_Query NOT EXISTS bug)

4.7.2

  • FIX: SEO filters now check ALL plugin field variants (RankMath + Yoast) regardless of active plugin
  • Fixes incorrect filter results on sites with residual Yoast metadata after switching to RankMath
  • Dashboard stats and content filters now return consistent results

4.7.1

  • Switched ALL SEO filters to raw SQL + post__in approach — bypasses WP_Query meta_query bugs, post__not_in stripping, and RankMath posts_where consumption
  • “Missing” filters now run direct SQL to find missing post IDs, then use post__in to include only those
  • “Has” filters use same approach for consistency and reliability

4.7.0

  • Fixed server-side filters consumed by RankMath sub-queries — replaced self-removing posts_where with persistent filter using custom query var
  • All “missing” filters (keywords, SEO title, meta description) now use autoboost_exclude_ids query var immune to third-party query consumption
  • Both REST controller and query handler updated

4.6.9

  • Fixed ALL server-side filters: replaced post__not_in (stripped by WP REST pipeline) with direct SQL WHERE injection
  • Affects missing keywords, missing SEO title, missing meta description filters for RankMath and dual-plugin setups
  • Both REST controller and query handler updated

4.6.8

  • Added diagnostic logging to REST filter callback to debug post__not_in issue

3.4.6

  • Added filter-debug diagnostic endpoint to troubleshoot server-side filtering
  • Fixed server-side filters using raw SQL instead of nested WP_Meta_Query (workaround for WP Trac #29560)

3.4.4

  • Fixed RankMath meta key variant handling — filters now check both rank_math_* and rank_math* keys
  • Fixed dashboard stats to include non-underscore RankMath meta keys
  • Fixed class VERSION constant (was 3.4.2)

3.4.3

  • Fixed server-side filters returning all posts when only one SEO plugin is installed

3.4

  • Security improvements and bug fixes

3.3

  • Connection diagnostics

3.2

  • Redesigned admin page

3.0

  • Major update with improved performance and filtering

2.0

  • Advanced filtering and better performance

1.0

  • Initial release

Plugin Website
Visit website

Author
Lewis
Version:
5.5.2
Last Updated
April 4, 2026
Requires
WordPress 5.8
Tested Up To
WordPress 6.9.4
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.