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