WordPress.DB.DirectDatabaseQuery.NoCaching
No Caching
The plugin runs a direct database query instead of using a higher-level WordPress API or cache-aware pattern.
Why It Shows Up
Plugin Check found `$wpdb` access that queries the database directly, changes schema, or bypasses normal caching expectations.
Why It Matters
Direct queries can be correct, but they are easier to make unsafe, slower at scale, and harder for WordPress to cache or filter.
How to Fix
- Use WordPress APIs such as post, term, metadata, option, or user functions when they fit the task.
- If direct SQL is necessary, prepare dynamic values and add a clear caching strategy for repeated reads.
- Keep schema changes in activation or upgrade routines and make them idempotent.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #3301 | Enable Abilities for MCP | 87 | 48 | 1k+ | Direct Query | |||
| #3302 | GTM Kit – Google Tag Manager & GA4 integration | 87 | 5 | 17 | 30k+ | Missing direct file access protection | ||
| #3303 | I Recommend This – Love/Like Button for WordPress Posts | 87 | 3 | 49 | 5k+ | Direct Query | ||
| #3304 | Image Optimization – Compress Images and Convert to WebP or AVIF | 87 | 15 | 24 | 1m+ | Missing Translators Comment | ||
| #3305 | ImageKit – URL based image manipulation and optimization | 87 | 47 | 42 | 1k+ | Non-prefixed global variable | ||
| #3306 | Menu Caching | 87 | 3 | 12 | 500 | Request data is not unslashed | ||
| #3307 | Bulk Page Generator and Mass Page Builder – Page Generator | 87 | 26 | 87 | 4k+ | Non-prefixed global variable | ||
| #3308 | ParcelWILL (Formerly ParcelPanel) – Shipment Tracking, Tracking & Order Tracking for WooCommerce | 87 | 6 | 81 | 7k+ | Non-prefixed global variable | ||
| #3309 | Recently Viewed Products for WooCommerce – Carousel, Widget, Block & Email | 87 | 2 | 18 | 1k+ | Database parameter is not escaped | ||
| #3310 | Snitch | 87 | 5 | 19 | 900 | Nonce verification recommended | ||
| #3311 | Tickera – Sell Tickets & Manage Events | 87 | 7 | 54 | 2k+ | Non-prefixed hook name | ||
| #3312 | Variations as Single Product – Display Single Variation for WooCommerce | 87 | 8 | 33 | 1k+ | Direct Query | ||
| #3313 | WP Missed Schedule Posts | 87 | 7 | 9 | 10k+ | trademarked term | ||
| #3314 | CPO Content Types | 88 | 13 | 25 | 3k+ | Missing direct file access protection | ||
| #3315 | Hindi-To-Lat | 88 | 3 | 14 | 400 | Direct Query | ||
| #3316 | Include Me | 88 | 7 | 7 | 4k+ | Short PHP open tag found | ||
| #3317 | Lightbox with PhotoSwipe | 88 | 1 | 24 | 20k+ | Non-prefixed global variable | ||
| #3318 | WPS Bookings for WooCommerce | 88 | 26 | 249 | 4k+ | Non-prefixed global variable | ||
| #3319 | SiteGround Email Marketing | 88 | 18 | 75 | 1k+ | Non-prefixed namespace | ||
| #3320 | Smart Blocks – WordPress Gutenberg Blocks | 88 | 10 | 76 | 1k+ | Post Not In post not in | ||
| #3321 | Ukr-To-Lat | 88 | 3 | 13 | 6k+ | Direct Query | ||
| #3322 | User IP and Location | 88 | 2 | 10 | 3k+ | Input is not sanitized | ||
| #3323 | Divi Carousel Free (Divi5 Support) | 88 | 268 | 26 | 30k+ | Text Domain Mismatch | ||
| #3324 | WPC Admin Columns | 88 | 30 | 1k+ | Direct Query | |||
| #3325 | Archivarix External Images Importer | 89 | 8 | 35 | 1k+ | Non-prefixed global variable | ||
| #3326 | Bit Flows: AI Agent Automation & Integrations for Forms, CRM, eCommerce, Google Sheets, and More | 89 | 13 | 20 | 2k+ | wp function not compatible with requires wp | ||
| #3327 | Custom Layouts – Post + Product grids made easy | 89 | 23 | 22 | 4k+ | Missing Translators Comment | ||
| #3328 | Location Add-on For Gravity Forms | 89 | 18 | 16 | 400 | Text Domain Mismatch | ||
| #3329 | Real Custom Post Order: Create a custom order for your content | 89 | 1 | 19 | 8k+ | Non-prefixed global variable | ||
| #3330 | SiteLock Security – WP Hardening, Login Security & Malware Scans | 89 | 44 | 9 | 1k+ | Text Domain Mismatch | ||
| #3331 | Statify | 89 | 5 | 33 | 100k+ | Direct Query | ||
| #3332 | Taxonomy Metadata | 89 | 4 | 9 | 4k+ | Direct Query | ||
| #3333 | WP Featherlight Disabled | 89 | 5 | 11 | 2k+ | trademarked term | ||
| #3334 | Disable User Login | 89 | 1 | 20 | 500 | Direct Query | ||
| #3335 | WPC Smart Notifications for WooCommerce | 89 | 79 | 600 | Non-prefixed global variable | |||
| #3336 | Beehive Analytics – Google Analytics Dashboard | 90 | 611 | 22 | 20k+ | Text Domain Mismatch | ||
| #3337 | Cimo – Free Instant Image Optimizer & WebP Converter | 90 | 6 | 4 | 8k+ | Missing Translators Comment | ||
| #3338 | Disable Revisions | 90 | 5 | 5 | 1k+ | Direct Query | ||
| #3339 | External files in Media Library | 90 | 16 | 68 | 400 | Direct Query | ||
| #3340 | Featured Image Admin Thumb | 90 | 7 | 10 | 20k+ | Non-prefixed hook name | ||
| #3341 | Hide Related Video Youtube | 90 | 3 | 8 | 1k+ | Direct Query | ||
| #3342 | HivePress Messages | 90 | 7 | 10 | 7k+ | Direct Query | ||
| #3343 | HivePress Reviews | 90 | 5 | 11 | 7k+ | Non-prefixed global variable | ||
| #3344 | Post Export Import with Media | 90 | 34 | 41 | 1k+ | Missing Translators Comment | ||
| #3345 | Rapid URL Indexer for WP – Index Websites in Google | 90 | 6 | 28 | 1k+ | error log error log | ||
| #3346 | Slash Edit: Admin Shortcuts to Edit Posts and Pages Faster | 90 | 3 | 3 | 500 | Output is not escaped | ||
| #3347 | Three Column Screen Layout | 90 | 5 | 8 | 1k+ | Direct Query | ||
| #3348 | WPC Smart Compare for WooCommerce | 90 | 22 | 70k+ | Nonce verification recommended | |||
| #3349 | WPC Smart Quick View for WooCommerce | 90 | 25 | 90k+ | Nonce verification recommended | |||
| #3350 | WP BrowserUpdate | 90 | 11 | 7 | 1k+ | Missing Translators Comment |