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 |
|---|---|---|---|---|---|---|---|---|
| #3001 | Category AJAX Filter — Advanced Filter for Posts & Custom Post Types | 50 | 2 | 435 | 6k+ | Non-prefixed global variable | ||
| #3002 | Dynamic Pricing and Discount Rules | 50 | 25 | 65 | 1k+ | Non Singular String Literal Text | ||
| #3003 | Event Organiser CSV | 50 | 28 | 27 | 600 | Output is not escaped | ||
| #3004 | File Manager | 50 | 42 | 72 | 10k+ | Missing direct file access protection | ||
| #3005 | HT Slider For Elementor | 50 | 884 | 40 | 20k+ | Text Domain Mismatch | ||
| #3006 | IMGspider – 图片采集抓取插件 | 50 | 12 | 49 | 2k+ | Missing nonce verification | ||
| #3007 | Custom Block Builder – Lazy Blocks | 50 | 23 | 51 | 20k+ | Non-prefixed hook name | ||
| #3008 | PostmagThemes Demo Import | 50 | 191 | 114 | 1k+ | Text Domain Mismatch | ||
| #3009 | Product Open Pricing (Name Your Price) for WooCommerce | 50 | 105 | 37 | 6k+ | Text Domain Mismatch | ||
| #3010 | Razorpay Payment Links for WooCommerce | 50 | 16 | 34 | 1k+ | Nonce verification recommended | ||
| #3011 | Send Emails with Mandrill | 50 | 36 | 141 | 6k+ | Non-prefixed global variable | ||
| #3012 | Simple User Listing | 50 | 27 | 56 | 900 | Non-prefixed global variable | ||
| #3013 | Table Addons for Elementor | 50 | 92 | 29 | 20k+ | wp function not compatible with requires wp | ||
| #3014 | Theme Demo Import | 50 | 101 | 95 | 5k+ | Non-prefixed hook name | ||
| #3015 | TrustedSite | 50 | 29 | 14 | 20k+ | Output is not escaped | ||
| #3016 | BestWebSoft's Twitter | 50 | 477 | 174 | 900 | Text Domain Mismatch | ||
| #3017 | User Activity Tracking and Log | 50 | 30 | 259 | 3k+ | Non-prefixed global variable | ||
| #3018 | Veeqo for WooCommerce | 50 | 30 | 17 | 700 | Missing direct file access protection | ||
| #3019 | WP SVG Images | 50 | 58 | 12 | 30k+ | Text Domain Mismatch | ||
| #3020 | WRC Pricing Tables – Responsive CSS3 Pricing Tables | 50 | 5 | 96 | 2k+ | Missing nonce verification | ||
| #3021 | Cart Popup for WooCommerce | 51 | 9 | 115 | 9k+ | Non-prefixed global variable | ||
| #3022 | AVIF Uploader | 51 | 49 | 44 | 4k+ | Missing Arg Domain | ||
| #3023 | Feeds for TikTok – Display Video Feeds in Grid Layouts | 51 | 18 | 59 | 1k+ | Request data is not unslashed | ||
| #3024 | WPML Multilingual for BuddyPress and BuddyBoss | 51 | 18 | 21 | 6k+ | SQL query is not prepared | ||
| #3025 | Dolyame Payment gateway | 51 | 122 | 10 | 700 | Text Domain Mismatch | ||
| #3026 | Firelight Lightbox | 51 | 78 | 97 | 200k+ | Non-prefixed global variable | ||
| #3027 | GamiPress – Reset User | 51 | 14 | 27 | 400 | Interpolated SQL is not prepared | ||
| #3028 | Gravatar Enhanced – Avatars, Profiles, and Privacy | 51 | 38 | 48 | 100k+ | Dynamic hook name | ||
| #3029 | Gutenverse – WordPress Blocks, Page Builder & Site Editor | 51 | 17 | 47 | 20k+ | Non-prefixed hook name | ||
| #3030 | Interactive Globes – 3D World Maps | 51 | 24 | 104 | 400 | Non-prefixed global variable | ||
| #3031 | Menu Icons by Themeisle – Add Icons to Navigation Menus | 51 | 34 | 22 | 100k+ | Output is not escaped | ||
| #3032 | Mintpay | 51 | 14 | 35 | 600 | Nonce verification recommended | ||
| #3033 | OnSale Page for WooCommerce | 51 | 30 | 44 | 2k+ | Text Domain Mismatch | ||
| #3034 | Quotes and Tips by BestWebSoft | 51 | 485 | 190 | 1k+ | Text Domain Mismatch | ||
| #3035 | Simple Cookie Notification Bar | 51 | 49 | 6 | 1k+ | Text Domain Mismatch | ||
| #3036 | Redirect | 51 | 26 | 12 | 5k+ | Output is not escaped | ||
| #3037 | StoryChief | 51 | 12 | 55 | 1k+ | Input is not sanitized | ||
| #3038 | The Paste | 51 | 19 | 11 | 10k+ | Unsafe printing function | ||
| #3039 | Tourfic Toolkit | 51 | 44 | 27 | 1k+ | Output is not escaped | ||
| #3040 | Visual Sitemap | 51 | 23 | 6 | 400 | Output is not escaped | ||
| #3041 | VK Filter Search | 51 | 35 | 71 | 6k+ | Nonce verification recommended | ||
| #3042 | Payment Gateway Payoneer For WooCommerce | 51 | 9 | 35 | 1k+ | Input is not validated | ||
| #3043 | Swift SMTP (formerly Welcome Email Editor) | 51 | 12 | 62 | 7k+ | Missing nonce verification | ||
| #3044 | WP Counter Up – Animated Number Counter & Milestone Showcase | 51 | 18 | 239 | 1k+ | Non-prefixed global variable | ||
| #3045 | REST API Log | 51 | 44 | 95 | 5k+ | Non-prefixed hook name | ||
| #3046 | Insert Code by Angie Makes | 51 | 43 | 8 | 900 | Output is not escaped | ||
| #3047 | Affiliate Area Shortcodes by AffiliateWP | 52 | 56 | 16 | 2k+ | Text Domain Mismatch | ||
| #3048 | Metronet Tag Manager | 52 | 17 | 36 | 20k+ | Input is not validated | ||
| #3049 | Post Notification by Email | 52 | 36 | 13 | 2k+ | Output is not escaped | ||
| #3050 | Stealth Publish | 52 | 7 | 22 | 900 | Missing nonce verification |