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 |
|---|---|---|---|---|---|---|---|---|
| #3251 | MainWP Key Maker | 62 | 3 | 35 | 4k+ | Input is not sanitized | ||
| #3252 | payOS | 62 | 19 | 26 | 500 | Request data is not unslashed | ||
| #3253 | WiserNotify – Social Proof & FOMO Notifications, WooCommerce Sales Popups, Reviews & Announcement Bar | 62 | 13 | 32 | 1k+ | Request data is not unslashed | ||
| #3254 | Embed Videos For Product Image Gallery Using WooCommerce | 62 | 21 | 16 | 400 | Text Domain Mismatch | ||
| #3255 | WP Category Sort | 62 | 15 | 22 | 500 | Text Domain Mismatch | ||
| #3256 | Classic Editor and Classic Widgets | 63 | 18 | 41 | 20k+ | Nonce verification recommended | ||
| #3257 | Email Post Changes | 63 | 43 | 8 | 500 | Missing Arg Domain | ||
| #3258 | Essential Addons for Elementor – Popular Elementor Templates & Widgets | 63 | 78 | 184 | 2m+ | wp function not compatible with requires wp | ||
| #3259 | Fathom Analytics for WP | 63 | 25 | 15 | 10k+ | Output is not escaped | ||
| #3260 | Missed Scheduled Posts Publisher by WPBeginner | 63 | 16 | 17 | 30k+ | Text Domain Mismatch | ||
| #3261 | MooWoodle – WordPress Moodle LMS Integration, Sell Moodle Courses via WooCommerce | 63 | 10 | 45 | 800 | No Caching | ||
| #3262 | Order auto complete for WooCommerce | 63 | 56 | 22 | 1k+ | Text Domain Mismatch | ||
| #3263 | Contact Form to Chat Apps | Click to Chat to Order – FormyChat | 63 | 30 | 134 | 3k+ | Direct Query | ||
| #3264 | Rating Widget: Post Rating, 5 Star Rating, Reviews, Thumbs Up & Down, Reaction | 63 | 177 | 27 | 400 | Missing direct file access protection | ||
| #3265 | User Switching | 63 | 2 | 47 | 200k+ | Nonce verification recommended | ||
| #3266 | PayPing Gateway For Woocommerce | 63 | 11 | 40 | 1k+ | Non-prefixed hook name | ||
| #3267 | Phone Validator for WooCommerce | 63 | 8 | 33 | 1k+ | Missing nonce verification | ||
| #3268 | WPC Variation Bulk Editor for WooCommerce | 63 | 13 | 32 | 1k+ | Request data is not unslashed | ||
| #3269 | Beautiful taxonomy filters | 64 | 38 | 78 | 2k+ | Non-prefixed global variable | ||
| #3270 | CV Demo Importer | 64 | 21 | 95 | 400 | Non-prefixed global variable | ||
| #3271 | DataFeedWatch Connector for WooCommerce | 64 | 16 | 112 | 600 | Non-prefixed hook name | ||
| #3272 | Disabler | 64 | 212 | 38 | 900 | Text Domain Mismatch | ||
| #3273 | Dotdigital for WordPress | 64 | 41 | 123 | 400 | Dynamic hook name | ||
| #3274 | ELEX WooCommerce Product Price Custom Text (Before & After Text) and Discount | 64 | 444 | 137 | 2k+ | Missing Arg Domain | ||
| #3275 | Inactive Logout | 64 | 30 | 71 | 10k+ | Non-prefixed global variable | ||
| #3276 | Pageviews | 64 | 15 | 12 | 1k+ | Missing Translators Comment | ||
| #3277 | PHP Code Widget | 64 | 22 | 1 | 80k+ | Output is not escaped | ||
| #3278 | Product Import Export for WooCommerce – Import Export Product CSV Suite | 64 | 246 | 766 | 80k+ | Non-prefixed global variable | ||
| #3279 | Stag Custom Sidebars | 64 | 10 | 12 | 2k+ | Text Domain Mismatch | ||
| #3280 | Stancer for WooCommerce | 64 | 2 | 108 | 400 | Non-prefixed global variable | ||
| #3281 | 64 | 27 | 23 | 9k+ | Missing Translators Comment | |||
| #3282 | WProofreader spell & grammar check plugin for WordPress | 64 | 12 | 43 | 4k+ | Non-prefixed global variable | ||
| #3283 | JTL-Connector for WooCommerce | 64 | 7 | 166 | 1k+ | Direct Query | ||
| #3284 | WP Search with Algolia | 64 | 26 | 16 | 7k+ | Exception output is not escaped | ||
| #3285 | WPC Shop as a Customer for WooCommerce | 64 | 5 | 38 | 400 | Request data is not unslashed | ||
| #3286 | Authorizer | 65 | 3 | 54 | 5k+ | Nonce verification recommended | ||
| #3287 | Creta Testimonial Showcase | 65 | 28 | 41 | 3k+ | Non-prefixed global variable | ||
| #3288 | Custom Product Tabs for WooCommerce WP All Import Add-on | 65 | 18 | 18 | 1k+ | Non-prefixed global variable | ||
| #3289 | Disable REST API | 65 | 12 | 15 | 90k+ | Output is not escaped | ||
| #3290 | WP All Import – Import SEO Settings for All In One SEO | 65 | 19 | 11 | 900 | Output is not escaped | ||
| #3291 | Notibar – Notification Bar for WordPress | 65 | 43 | 62 | 8k+ | wp function not compatible with requires wp | ||
| #3292 | SocketLabs | 65 | 15 | 18 | 900 | Output is not escaped | ||
| #3293 | T4B News Ticker – Responsive News Scroller, Slider, and Animations | 65 | 20 | 10 | 7k+ | Output is not escaped | ||
| #3294 | WebberZone Top 10 — Popular Posts | 65 | 37 | 176 | 10k+ | Database parameter is not escaped | ||
| #3295 | Web and WooCommerce Addons for WPBakery Builder | 65 | 497 | 123 | 1k+ | Text Domain Mismatch | ||
| #3296 | Ajaxify Comments – Ajax and Lazy Loading Comments | 65 | 20 | 38 | 3k+ | Non-prefixed hook name | ||
| #3297 | WPC Free Gift Coupons for WooCommerce | 65 | 8 | 25 | 400 | Non-prefixed class | ||
| #3298 | WPAdmin AWS CDN | 66 | 161 | 42 | 500 | Text Domain Mismatch | ||
| #3299 | Password Reset with Code for WordPress REST API | 66 | 24 | 8 | 900 | Exception output is not escaped | ||
| #3300 | Bopo – WooCommerce Product Bundle Builder | 66 | 137 | 135 | 1k+ | Text Domain Mismatch |