WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
Non-prefixed hook name
The plugin defines a hook name without a plugin-specific prefix.
Why It Shows Up
WordPress loads many plugins in the same PHP runtime. Plugin Check found a global symbol or hook name that is not clearly namespaced to this plugin.
Why It Matters
Unprefixed globals can collide with WordPress core, themes, or other plugins, causing fatal errors, overwritten values, or handlers running in the wrong context.
How to Fix
- Choose a short, unique prefix or namespace based on the plugin slug or vendor name.
- Rename the hook name so it cannot collide with code from another plugin.
- For public hooks, document the final hook name and keep it stable after release.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #2301 | One Stop Shop for WooCommerce | 68 | 23 | 83 | 10k+ | Input is not sanitized | ||
| #2302 | PagBank for WooCommerce | 68 | 8 | 36 | 3k+ | Input is not sanitized | ||
| #2303 | SKT Page Builder | 68 | 15 | 49 | 2k+ | Missing nonce verification | ||
| #2304 | Slim Maintenance Mode | 68 | 9 | 10 | 10k+ | Output is not escaped | ||
| #2305 | Title Toggle for Storefront Theme | 68 | 16 | 9 | 3k+ | Output is not escaped | ||
| #2306 | Increase Maximum Upload File Size | 68 | 28 | 14 | 40k+ | Missing Arg Domain | ||
| #2307 | Export and Import Users and Customers | 68 | 223 | 662 | 60k+ | Non-prefixed global variable | ||
| #2308 | Solid Mail – SMTP email and logging made by SolidWP | 68 | 16 | 17 | 60k+ | Database parameter is not escaped | ||
| #2309 | Age Gate | 69 | 61 | 139 | 40k+ | Missing direct file access protection | ||
| #2310 | WP Wand – Unlimited Content Generation using AI – for OpenAI, Claude, Openrouter and Deepseek | 69 | 452 | 25 | 1k+ | Text Domain Mismatch | ||
| #2311 | Burst Statistics – Simple WordPress Analytics (Google Analytics Alternative) | 69 | 33 | 368 | 200k+ | Direct Query | ||
| #2312 | Contact Form 7 | 69 | 56 | 39 | 10m+ | Missing direct file access protection | ||
| #2313 | Contact Form 7: Accessible Defaults | 69 | 3 | 28 | 5k+ | Nonce verification recommended | ||
| #2314 | Disable Users | 69 | 11 | 9 | 2k+ | Text Domain Mismatch | ||
| #2315 | ELEX WooCommerce Bulk Edit Products, Prices & Attributes (Basic) | 69 | 511 | 51 | 4k+ | Text Domain Mismatch | ||
| #2316 | WPS Bookings for WooCommerce | 69 | 30 | 250 | 4k+ | Non-prefixed global variable | ||
| #2317 | Search & Filter | 69 | 21 | 28 | 50k+ | Input is not sanitized | ||
| #2318 | SlingBlocks – Gutenberg Blocks by FunnelKit (Formerly WooFunnels) | 69 | 17 | 952 | 6k+ | Non-prefixed global variable | ||
| #2319 | WP Bulk Delete | 69 | 7 | 44 | 100k+ | Non-prefixed hook name | ||
| #2320 | Export WordPress Menus | 69 | 94 | 22 | 1k+ | wp function not compatible with requires wp | ||
| #2321 | Add Widget After Content | 70 | 6 | 11 | 7k+ | Setting is missing a sanitization callback | ||
| #2322 | In-feed ads for Google AdSense | 70 | 20 | 20 | 7k+ | Non-prefixed global variable | ||
| #2323 | AppScenic – Smart AI Dropshipping | 70 | 16 | 41 | 3k+ | Dynamic hook name | ||
| #2324 | Yoast Duplicate Post | 70 | 8 | 88 | 4m+ | Nonce verification recommended | ||
| #2325 | Portfolio Post Type | 70 | 7 | 11 | 50k+ | Nonce verification recommended | ||
| #2326 | Press This | 70 | 1 | 44 | 5k+ | Non-prefixed hook name | ||
| #2327 | Quick and Easy FAQs | 70 | 93 | 9 | 10k+ | Non Singular String Literal Domain | ||
| #2328 | Smart WYSIWYG Blocks Of Content | 70 | 36 | 4 | 1k+ | Output is not escaped | ||
| #2329 | TP Product Image Flipper for WooCommerce | 70 | 17 | 15 | 9k+ | Non-prefixed function | ||
| #2330 | Upsell Funnel Builder for WooCommerce – Create Upsells, Cross-Sells, Order Bumps, Frequently Bought, and Popups. | 70 | 3 | 1,446 | 3k+ | Non-prefixed global variable | ||
| #2331 | WEBKINDER Integration for Google Analytics and Google Tag Manager | 70 | 15 | 22 | 10k+ | Output is not escaped | ||
| #2332 | Cart All In One For WooCommerce | 70 | 6 | 150 | 6k+ | Non-prefixed global variable | ||
| #2333 | aapanel WP Toolkit | 71 | 20 | 18 | 2k+ | wp function not compatible with requires wp | ||
| #2334 | Bold Timeline Lite | 71 | 220 | 561 | 10k+ | Non-prefixed global variable | ||
| #2335 | Cloudinary – Deliver Images and Videos at Scale | 71 | 690 | 130 | 5k+ | Text Domain Mismatch | ||
| #2336 | Nginx Helper | 71 | 47 | 60 | 200k+ | Non-prefixed global variable | ||
| #2337 | Selection Lite | 71 | 14 | 21 | 10k+ | Missing Arg Domain | ||
| #2338 | WindPress – Tailwind CSS integration for WordPress | 71 | 16 | 106 | 3k+ | Non-prefixed hook name | ||
| #2339 | Discount Rules for WooCommerce | 71 | 10 | 454 | 100k+ | Non-prefixed global variable | ||
| #2340 | Direct Checkout for WooCommerce | 71 | 78 | 35 | 80k+ | Text Domain Mismatch | ||
| #2341 | Multi-Step Checkout for WooCommerce | 71 | 38 | 104 | 8k+ | Non-prefixed global variable | ||
| #2342 | WP Widget in Navigation | 71 | 37 | 15 | 3k+ | Non Singular String Literal Domain | ||
| #2343 | Advanced WordPress Backgrounds | 72 | 21 | 7 | 30k+ | Output is not escaped | ||
| #2344 | Login Logout Menu | 72 | 7 | 20 | 20k+ | Input is not sanitized | ||
| #2345 | Featured Image in RSS Feed by MailerLite | 72 | 12 | 7 | 1k+ | Output is not escaped | ||
| #2346 | Media File Sizes | 72 | 14 | 5 | 1k+ | Output is not escaped | ||
| #2347 | Media Library Organizer – Folders, File Manager & Media Categories | 72 | 20 | 130 | 20k+ | Non-prefixed global variable | ||
| #2348 | Responsive Blocks – Page Builder for Blocks & Patterns | 72 | 47 | 43 | 4k+ | badly named files | ||
| #2349 | Simple Local Avatars | 72 | 14 | 16 | 100k+ | Non-prefixed constant | ||
| #2350 | SmartSMTP | 72 | 7 | 37 | 2k+ | Nonce verification recommended |