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 |
|---|---|---|---|---|---|---|---|---|
| #3351 | Video Tab For WooCommerce | 68 | 7 | 13 | 600 | Missing nonce verification | ||
| #3352 | WiserReview Product Reviews for WooCommerce | 68 | 21 | 110 | 900 | Non-prefixed global variable | ||
| #3353 | Product Category Slider for WooCommerce | 68 | 21 | 104 | 800 | Non-prefixed hook name | ||
| #3354 | Ever Accounting – Accounting & Invoicing Solution for Small Businesses | 68 | 69 | 661 | 1k+ | Non-prefixed hook name | ||
| #3355 | WP Sanitize Accented Uploads | 68 | 15 | 16 | 800 | Quoted Simple Placeholder | ||
| #3356 | Solid Mail – SMTP email and logging made by SolidWP | 68 | 16 | 17 | 60k+ | Database parameter is not escaped | ||
| #3357 | Age Gate | 69 | 61 | 139 | 40k+ | Missing direct file access protection | ||
| #3358 | WP Wand – Unlimited Content Generation using AI – for OpenAI, Claude, Openrouter and Deepseek | 69 | 452 | 25 | 1k+ | Text Domain Mismatch | ||
| #3359 | Black Bar | 69 | 78 | 39 | 500 | Short PHP open tag found | ||
| #3360 | Burst Statistics – Simple WordPress Analytics (Google Analytics Alternative) | 69 | 33 | 379 | 200k+ | Direct Query | ||
| #3361 | Contact Form 7 | 69 | 56 | 39 | 10m+ | Missing direct file access protection | ||
| #3362 | Contact Form 7: Accessible Defaults | 69 | 3 | 28 | 5k+ | Nonce verification recommended | ||
| #3363 | Disable Users | 69 | 11 | 9 | 2k+ | Text Domain Mismatch | ||
| #3364 | DOKU Payment | 69 | 53 | 46 | 400 | wp function not compatible with requires wp | ||
| #3365 | ELEX WooCommerce Bulk Edit Products, Prices & Attributes (Basic) | 69 | 511 | 51 | 4k+ | Text Domain Mismatch | ||
| #3366 | Scroll Down Arrow | 69 | 30 | 30 | 800 | Missing Arg Domain | ||
| #3367 | Search & Filter | 69 | 21 | 28 | 50k+ | Input is not sanitized | ||
| #3368 | SlingBlocks – Gutenberg Blocks by FunnelKit (Formerly WooFunnels) | 69 | 17 | 952 | 6k+ | Non-prefixed global variable | ||
| #3369 | Export WordPress Menus | 69 | 94 | 22 | 1k+ | wp function not compatible with requires wp | ||
| #3370 | WP Mapa Politico España | 69 | 32 | 12 | 400 | Output is not escaped | ||
| #3371 | Zapper Payments | 69 | 11 | 11 | 600 | Output is not escaped | ||
| #3372 | Add Widget After Content | 70 | 6 | 11 | 7k+ | Setting is missing a sanitization callback | ||
| #3373 | In-feed ads for Google AdSense | 70 | 20 | 20 | 6k+ | Non-prefixed global variable | ||
| #3374 | AppScenic – Smart AI Dropshipping | 70 | 16 | 41 | 3k+ | Dynamic hook name | ||
| #3375 | WebDefender Security – Protection & AntiSpam | 70 | 176 | 61 | 1k+ | wp function not compatible with requires wp | ||
| #3376 | Yoast Duplicate Post | 70 | 8 | 88 | 3m+ | Nonce verification recommended | ||
| #3377 | Easy Hotel – Powerful Hotel Booking | 70 | 4 | 1,900 | 800 | Non-prefixed global variable | ||
| #3378 | FAZ Cookie Manager | 70 | 315 | 800 | Non-prefixed hook name | |||
| #3379 | Free Gift Product For WooCommerce | 70 | 9 | 77 | 800 | Non-prefixed global variable | ||
| #3380 | Ghost | 70 | 25 | 12 | 600 | Output is not escaped | ||
| #3381 | Library | 70 | 14 | 3 | 700 | Output is not escaped | ||
| #3382 | Portfolio Post Type | 70 | 7 | 11 | 50k+ | Nonce verification recommended | ||
| #3383 | Press This | 70 | 1 | 44 | 5k+ | Non-prefixed hook name | ||
| #3384 | Show IP address | 70 | 6 | 20 | 1k+ | Input is not sanitized | ||
| #3385 | Smart WYSIWYG Blocks Of Content | 70 | 36 | 4 | 1k+ | Output is not escaped | ||
| #3386 | Spocket ‑ US & EU Dropshipping | 70 | 15 | 31 | 1k+ | Direct Query | ||
| #3387 | TP Product Image Flipper for WooCommerce | 70 | 17 | 15 | 9k+ | Non-prefixed function | ||
| #3388 | Upsell Funnel Builder for WooCommerce – Create Upsells, Cross-Sells, Order Bumps, Frequently Bought, and Popups. | 70 | 3 | 1,446 | 3k+ | Non-prefixed global variable | ||
| #3389 | WEBKINDER Integration for Google Analytics and Google Tag Manager | 70 | 15 | 22 | 10k+ | Output is not escaped | ||
| #3390 | Cart All In One For WooCommerce | 70 | 6 | 150 | 5k+ | Non-prefixed global variable | ||
| #3391 | WPThumb | 70 | 30 | 9 | 800 | Output is not escaped | ||
| #3392 | aapanel WP Toolkit | 71 | 20 | 18 | 2k+ | wp function not compatible with requires wp | ||
| #3393 | Bold Timeline Lite | 71 | 220 | 561 | 10k+ | Non-prefixed global variable | ||
| #3394 | commonWP | 71 | 18 | 33 | 400 | Non-prefixed hook name | ||
| #3395 | Event SEO: Event Schema / Structured Data: Google Rich Snippet Schema for Event | 71 | 24 | 49 | 700 | Non-prefixed global variable | ||
| #3396 | Nginx Helper | 71 | 47 | 60 | 200k+ | Non-prefixed global variable | ||
| #3397 | Quick and Easy FAQs | 71 | 92 | 9 | 10k+ | Non Singular String Literal Domain | ||
| #3398 | SmartSMTP | 71 | 8 | 42 | 2k+ | Nonce verification recommended | ||
| #3399 | Webhook for Discord | 71 | 119 | 20 | 400 | Text Domain Mismatch | ||
| #3400 | WindPress – Tailwind CSS integration for WordPress | 71 | 16 | 106 | 3k+ | Non-prefixed hook name |