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 |
|---|---|---|---|---|---|---|---|---|
| #1951 | Jarvis | 35 | 10 | 19 | 500 | Input is not validated | ||
| #1952 | Static Site Exporter | 35 | 54 | 25 | 500 | file system operations mkdir | ||
| #1953 | Jetpack VideoPress | 35 | 710 | 241 | 7k+ | Text Domain Mismatch | ||
| #1954 | JS Categories List Widget | 35 | 37 | 18 | 1k+ | Non Singular String Literal Domain | ||
| #1955 | JSON Feed (jsonfeed.org) | 35 | 9 | 29 | 1k+ | Non-prefixed global variable | ||
| #1956 | Kadence for WooCommerce and Elementor | 35 | 39 | 21 | 3k+ | Output is not escaped | ||
| #1957 | Kargo Takip | 35 | 84 | 142 | 3k+ | Missing nonce verification | ||
| #1958 | Kaya QR Code Generator | 35 | 193 | 40 | 20k+ | Non Singular String Literal Domain | ||
| #1959 | KBoard 위젯 – 워드프레스 게시판 | 35 | 53 | 32 | 3k+ | Output is not escaped | ||
| #1960 | Keyring | 35 | 233 | 203 | 1k+ | Output is not escaped | ||
| #1961 | Kiyoh customer review | 35 | 173 | 68 | 500 | Output is not escaped | ||
| #1962 | Kustom Checkout for WooCommerce | 35 | 101 | 505 | 10k+ | Dynamic hook name | ||
| #1963 | Klarna Order Management for WooCommerce | 35 | 22 | 37 | 10k+ | Non-prefixed hook name | ||
| #1964 | Flexible Invoices for WooCommerce – KSeF Add-on | 35 | 39 | 15 | 600 | Non-prefixed global variable | ||
| #1965 | Lead Call Buttons | 35 | 113 | 81 | 6k+ | Output is not escaped | ||
| #1966 | Topic Progression Using Storyline/Captivate for LearnDash | 35 | 382 | 25 | 400 | Text Domain Mismatch | ||
| #1967 | LiteSpeed Cache | 35 | 286 | 893 | 7m+ | Non-prefixed global variable | ||
| #1968 | Log in with Google | 35 | 5 | 17 | 6k+ | Non-prefixed global variable | ||
| #1969 | Magic Login – Passwordless Authentication for WordPress – Login Without Password | 35 | 23 | 53 | 3k+ | Missing nonce verification | ||
| #1970 | Magical Addons For Elementor ( Header Footer Builder, Free Elementor Widgets, Elementor Templates Library ) | 35 | 266 | 127 | 5k+ | Output is not escaped | ||
| #1971 | Mail Queue | 35 | 25 | 103 | 900 | Nonce verification recommended | ||
| #1972 | MainWP Child Reports | 35 | 49 | 116 | 100k+ | Non-prefixed hook name | ||
| #1973 | MapSVG – Vector maps, Image maps, Google Maps | 35 | 74 | 47 | 1k+ | Missing direct file access protection | ||
| #1974 | Mark Posts | 35 | 30 | 34 | 1k+ | Output is not escaped | ||
| #1975 | MathML Block | 35 | 10 | 2 | 1k+ | Hidden files included | ||
| #1976 | MeetingHub – Webinar & Meeting Plugin for Zoom, Google Meet, Webex, Microsoft Teams, & Jitsi Meet | 35 | 33 | 289 | 400 | Non-prefixed global variable | ||
| #1977 | Mini Ajax Cart for WooCommerce | 35 | 297 | 240 | 900 | Text Domain Mismatch | ||
| #1978 | Mini Cart for WooCommerce – Add a Stylish Sliding Cart | 35 | 42 | 160 | 600 | Non-prefixed global variable | ||
| #1979 | SAML IDP (Identity Provider) – Login with Website Users | 35 | 13 | 326 | 600 | Non-prefixed global variable | ||
| #1980 | MONEI Payments for WooCommerce | 35 | 15 | 65 | 500 | Non-prefixed hook name | ||
| #1981 | More Widgets | 35 | 55 | 15 | 1k+ | Output is not escaped | ||
| #1982 | AI Product Search for WooCommerce – Motive Commerce Search | 35 | 70 | 82 | 400 | Missing direct file access protection | ||
| #1983 | Moyasar | 35 | 507 | 128 | 700 | Text Domain Mismatch | ||
| #1984 | MotoPress Hotel Booking Styles & Templates | 35 | 37 | 19 | 10k+ | block api version too low | ||
| #1985 | My Eyes Are Up Here | 35 | 7 | 12 | 2k+ | Missing nonce verification | ||
| #1986 | Never Let Me Go | 35 | 34 | 47 | 400 | Non-prefixed global variable | ||
| #1987 | Nginx Cache Controller | 35 | 79 | 96 | 1k+ | Text Domain Mismatch | ||
| #1988 | Nooz | 35 | 287 | 108 | 500 | Text Domain Mismatch | ||
| #1989 | Meta pixel for WordPress | 35 | 90 | 40 | 400k+ | Exception output is not escaped | ||
| #1990 | Newsletters, Email Marketing, SMS and Popups by Omnisend | 35 | 4 | 2 | 100k+ | Hidden files included | ||
| #1991 | Email Marketing for WooCommerce by Omnisend | 35 | 12 | 21 | 50k+ | Non-prefixed function | ||
| #1992 | One Page Express Companion | 35 | 132 | 65 | 10k+ | Output is not escaped | ||
| #1993 | ONet Regenerate Thumbnails | 35 | 190 | 64 | 1k+ | Text Domain Mismatch | ||
| #1994 | Plugin Ongkos Kirim JNE Tiki Sicepat Wahana J&T POS for Woocommerce | 35 | 117 | 144 | 2k+ | Output is not escaped | ||
| #1995 | Out of the Block: OpenStreetMap | 35 | 9 | 4 | 700 | Missing direct file access protection | ||
| #1996 | OPcache Manager | 35 | 155 | 75 | 1k+ | Output is not escaped | ||
| #1997 | Order Delivery Date for WooCommerce | 35 | 2,060 | 73 | 10k+ | wp function not compatible with requires wp | ||
| #1998 | Orderable – Restaurant & Food Ordering System | 35 | 12 | 324 | 5k+ | Non-prefixed global variable | ||
| #1999 | OT Flatsome Vertical Menu | 35 | 126 | 26 | 10k+ | Text Domain Mismatch | ||
| #2000 | Otter Blocks – Gutenberg Blocks, Page Builder for Gutenberg Editor & FSE | 35 | 131 | 41 | 300k+ | Missing direct file access protection |