WordPress.DB.DirectDatabaseQuery.SchemaChange
Schema Change
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 |
|---|---|---|---|---|---|---|---|---|
| #401 | Overlay Image Divi Module | 24 | 576 | 1,301 | 2k+ | Non-prefixed global variable | ||
| #402 | Participants Database | 24 | 951 | 894 | 7k+ | SQL query is not prepared | ||
| #403 | Paymob for WooCommerce | 24 | 348 | 288 | 6k+ | Text Domain Mismatch | ||
| #404 | Post Export Import with Media | 24 | 619 | 1,334 | 1k+ | Non-prefixed global variable | ||
| #405 | Post Slider and Post Carousel with Post Vertical Scrolling Widget – A Responsive Post Slider | 24 | 599 | 1,532 | 10k+ | Non-prefixed global variable | ||
| #406 | Premmerce Brands for WooCommerce | 24 | 700 | 1,344 | 2k+ | Non-prefixed global variable | ||
| #407 | Premmerce Product Filter for WooCommerce | 24 | 817 | 1,486 | 2k+ | Non-prefixed global variable | ||
| #408 | Product Editor Pro – WooCommerce Bulk Edit: Prices, Stock, Images, Titles, CSV Import & More | 24 | 2,154 | 4,833 | 1k+ | Non-prefixed global variable | ||
| #409 | Pz-LinkCard | 24 | 951 | 1,581 | 20k+ | Non-prefixed global variable | ||
| #410 | Quiz and Survey Master (QSM) – Easy Quiz and Survey Maker | 24 | 407 | 2,587 | 40k+ | Non-prefixed hook name | ||
| #411 | Registrations for the Events Calendar – Event Registration Plugin | 24 | 405 | 943 | 7k+ | Non-prefixed global variable | ||
| #412 | Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More | 24 | 141 | 685 | 100k+ | Non-prefixed global variable | ||
| #413 | RSFirewall! | 24 | 563 | 521 | 4k+ | Output is not escaped | ||
| #414 | RSVP and Event Management | 24 | 345 | 624 | 3k+ | Direct Query | ||
| #415 | Screen Reader Accessibility – WCAG, Text-to-Speech & AI Accessibility Fixes | 24 | 235 | 330 | 600 | Non-prefixed global variable | ||
| #416 | Security Plugin, Firewall & Malware Scanner with Auto Removal | 24 | 1,188 | 770 | 30k+ | Output is not escaped | ||
| #417 | Servebolt Optimizer | 24 | 1,958 | 681 | 1k+ | Text Domain Mismatch | ||
| #418 | Share This Image | 24 | 744 | 1,582 | 1k+ | Non-prefixed global variable | ||
| #419 | Shortcodes Ultimate – Content Elements | 24 | 656 | 1,552 | 400k+ | Non-prefixed global variable | ||
| #420 | SiteGuard WP Plugin | 24 | 359 | 350 | 500k+ | Output is not escaped | ||
| #421 | Sitepact's Contact Form 7 Extension For Klaviyo | 24 | 541 | 1,412 | 500 | Non-prefixed global variable | ||
| #422 | SKT Templates – 100% Free Templates for Elementor & Gutenberg | 24 | 553 | 1,353 | 20k+ | Non-prefixed global variable | ||
| #423 | Video Slider – Slider Carousel | 24 | 208 | 2,203 | 3k+ | Request data is not unslashed | ||
| #424 | Slideshow Gallery LITE | 24 | 896 | 414 | 5k+ | Output is not escaped | ||
| #425 | Smart Variations Images & Swatches for WooCommerce | 24 | 990 | 1,486 | 1k+ | Non-prefixed global variable | ||
| #426 | Sokol: Smart WooCommerce Search | 24 | 599 | 1,551 | 6k+ | Non-prefixed global variable | ||
| #427 | SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery | 24 | 831 | 1,903 | 4k+ | Non-prefixed global variable | ||
| #428 | SpiceBox | 24 | 828 | 1,816 | 20k+ | Non-prefixed global variable | ||
| #429 | Spider Elements – Premium Elementor Widgets & Addons Library | 24 | 542 | 1,555 | 500 | Non-prefixed global variable | ||
| #430 | Squad Modules Lite – Free Divi 5 & Divi 4 Modules for Divi Builder | 24 | 605 | 1,471 | 1k+ | Non-prefixed global variable | ||
| #431 | GEO Plugin by Squirrly SEO | 24 | 1,196 | 224 | 30k+ | Missing Translators Comment | ||
| #432 | StoreEngine — Complete eCommerce Solution with Memberships, Licensing, Affiliates & More | 24 | 149 | 482 | 600 | Non-prefixed global variable | ||
| #433 | StreamWeasels Online Status Bar | 24 | 555 | 1,349 | 500 | Non-prefixed global variable | ||
| #434 | StreamWeasels YouTube Integration | 24 | 544 | 1,384 | 1k+ | Non-prefixed global variable | ||
| #435 | Sunshine Photo Cart – Client Photo Gallery & Photo Proofing for Photographers | 24 | 360 | 1,472 | 1k+ | Nonce verification recommended | ||
| #436 | Support Genix – Helpdesk, AI Chatbot, Knowledge Base & Customer Support Ticketing System | 24 | 589 | 897 | 2k+ | Non-prefixed global variable | ||
| #437 | Surbma | GDPR Proof Cookie Consent & Notice Bar | 24 | 825 | 1,309 | 500 | Non-prefixed global variable | ||
| #438 | Tainacan | 24 | 138 | 592 | 1k+ | Direct Query | ||
| #439 | Team Members – Multi Language Supported Team Plugin | 24 | 2,081 | 11,206 | 7k+ | Non-prefixed global variable | ||
| #440 | Tiered Pricing Table for WooCommerce | 24 | 606 | 1,990 | 10k+ | Non-prefixed global variable | ||
| #441 | Ultra Addons for Contact Form 7 | 24 | 1,543 | 452 | 60k+ | Text Domain Mismatch | ||
| #442 | Ultimate Maps by Supsystic | 24 | 1,034 | 374 | 10k+ | Non Singular String Literal Domain | ||
| #443 | Ultimate Member – User Profile, Registration, Login, Member Directory, Content Restriction & Membership Plugin | 24 | 938 | 2,935 | 200k+ | Non-prefixed global variable | ||
| #444 | Unlimited Elements For Elementor | 24 | 710 | 2,093 | 300k+ | Non-prefixed global variable | ||
| #445 | Vimeography: Vimeo Video Gallery WordPress Plugin | 24 | 98 | 212 | 5k+ | Nonce verification recommended | ||
| #446 | Visitor Traffic Real Time Statistics | 24 | 473 | 927 | 30k+ | Non-prefixed global variable | ||
| #447 | Widget Detector for Elementor | 24 | 1,057 | 1,567 | 1k+ | Non-prefixed global variable | ||
| #448 | Conditional Fees for WooCommerce Lite | 24 | 592 | 1,298 | 500 | Non-prefixed global variable | ||
| #449 | Product Size Charts Plugin for WooCommerce | 24 | 1,042 | 1,422 | 9k+ | Non-prefixed global variable | ||
| #450 | Extra Fees for WooCommerce | 24 | 1,113 | 1,569 | 7k+ | Non-prefixed global variable |