WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound
Dynamic hook name
The plugin invokes a hook name built from a variable or expression that Plugin Check cannot verify as plugin-prefixed.
Why It Shows Up
Plugin Check found a dynamic hook name such as a variable, array value, or concatenated expression. Static analysis cannot prove the final hook name starts with the plugin's namespace.
Why It Matters
Dynamic hook names can be valid, but unclear naming makes collisions and unexpected integrations harder to reason about across WordPress, themes, and other plugins.
How to Fix
- Prefer a literal hook name with the plugin prefix when the hook is part of the plugin's public API.
- If the hook must be dynamic, keep a fixed plugin-prefixed base before the variable portion.
- Document public dynamic hooks so integrators know the expected final hook names.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #1351 | atec Cache APCu | 89 | 36 | 22 | 3k+ | wp function not compatible with requires wp | ||
| #1352 | LH Copy Media File | 89 | 21 | 5 | 800 | wp function not compatible with requires wp | ||
| #1353 | seQura | 89 | 2 | 23 | 1k+ | Non-prefixed global variable | ||
| #1354 | Card Elements for WPBakery | 90 | 1 | 208 | 500 | Non-prefixed global variable | ||
| #1355 | Power Coupons for WooCommerce | 90 | 6 | 91 | 20k+ | Non-prefixed global variable | ||
| #1356 | Quotes for WooCommerce | 90 | 186 | 265 | 4k+ | Text Domain Mismatch | ||
| #1357 | Reading Position Indicator | 90 | 2 | 23 | 800 | Dynamic hook name | ||
| #1358 | Relevanssi Live Ajax Search | 90 | 4 | 22 | 6k+ | Non-prefixed global variable | ||
| #1359 | SEO SIMPLE PACK | 90 | 99 | 97 | 100k+ | Non-prefixed global variable | ||
| #1360 | Advanced Cron Manager – debug & control | 91 | 30 | 90 | 30k+ | Non-prefixed global variable | ||
| #1361 | Book Review Block | 91 | 11 | 2 | 1k+ | block api version too low | ||
| #1362 | Clio Grow Form | 91 | 179 | 19 | 1k+ | Text Domain Mismatch | ||
| #1363 | Fonto – Custom Web Fonts Manager | 91 | 22 | 2k+ | Dynamic hook name | |||
| #1364 | Icegram Engage – Popups, Optins, CTAs & Lead Generation | 91 | 14 | 10 | 10k+ | wp function not compatible with requires wp | ||
| #1365 | MAS Static Content | 91 | 3 | 7 | 10k+ | Non-prefixed hook name | ||
| #1366 | Mesmerize Companion | 91 | 27 | 91 | 60k+ | Non-prefixed global variable | ||
| #1367 | Snow Monkey Forms | 91 | 36 | 41 | 30k+ | Non-prefixed global variable | ||
| #1368 | Themebeez Toolkit | 91 | 26 | 78 | 8k+ | Non-prefixed class | ||
| #1369 | Advanced Order Export For WooCommerce | 91 | 475 | 100k+ | Non-prefixed hook name | |||
| #1370 | Bootstrap Blocks | 91 | 8 | 30 | 10k+ | Non-prefixed global variable | ||
| #1371 | WPBulky – WordPress Bulk Edit Post Types | 91 | 1 | 18 | 400 | Database parameter is not escaped | ||
| #1372 | Cookie Consent – GDPR & CCPA Cookie Banner & Consent Manager | 92 | 16 | 10k+ | Direct Query | |||
| #1373 | Visual Slider | 92 | 3 | 266 | 600 | Non-prefixed function | ||
| #1374 | Advanced Views – Display Custom Fields (ACF, Pods, MetaBox), Posts, CPT and Woo Products anywhere in Gutenberg, Elementor, Divi, Beaver… | 93 | 29 | 42 | 3k+ | Non-prefixed global variable | ||
| #1375 | Contextual Related Posts | 93 | 2 | 167 | 50k+ | Non-prefixed hook name | ||
| #1376 | Disable Blog | 93 | 2 | 22 | 10k+ | Non-prefixed global variable | ||
| #1377 | Text To Speech TTS Accessibility | 93 | 164 | 3k+ | Non-prefixed hook name | |||
| #1378 | Serial Numbers – Ultimate License Manager for Selling, Licensing & Securely Delivering Digital Content with WooCommerce | 93 | 4 | 128 | 1k+ | Direct Query | ||
| #1379 | External Links – nofollow, noopener & new window | 93 | 24 | 67 | 90k+ | Non-prefixed global variable | ||
| #1380 | Visual Composer Templates Library | 94 | 25 | 11 | 600 | Missing direct file access protection | ||
| #1381 | MyParcel | 94 | 2 | 84 | 8k+ | Non-prefixed global variable | ||
| #1382 | Custom Login Page Customizer | 95 | 3 | 55 | 50k+ | Non-prefixed global variable | ||
| #1383 | Email Log | 95 | 5 | 53 | 80k+ | Non-prefixed hook name | ||
| #1384 | Multibanco, MB WAY, Credit card, Apple Pay, Google Pay, Payshop, Cofidis Pay, and PIX (ifthenpay) for WooCommerce | 95 | 86 | 8k+ | Non-prefixed function | |||
| #1385 | Open Graph | 95 | 74 | 8 | 10k+ | wp function not compatible with requires wp | ||
| #1386 | Smart Custom Fields | 95 | 8 | 28 | 50k+ | Dynamic hook name | ||
| #1387 | Supreme Maps | 95 | 38 | 15 | 2k+ | Text Domain Mismatch | ||
| #1388 | Print Invoice & Delivery Notes for WooCommerce | 95 | 5 | 58 | 30k+ | Non-prefixed global variable | ||
| #1389 | WP Telegram (Auto Post and Notifications) | 95 | 8 | 15 | 30k+ | Non-prefixed function | ||
| #1390 | WebberZone Snippetz – Header, Body and Footer manager | 96 | 1 | 53 | 2k+ | Dynamic hook name | ||
| #1391 | Bit SMTP – Easy SMTP Solution with Email Logs | 96 | 6 | 13 | 2k+ | Missing Version | ||
| #1392 | Button Generator – Easily Create Custom Buttons with Icons and Analytics | 96 | 8 | 68 | 5k+ | Non-prefixed global variable | ||
| #1393 | Float menu – awesome floating side menu | 96 | 9 | 103 | 30k+ | Non-prefixed global variable | ||
| #1394 | Meta Box | 96 | 5 | 16 | 500k+ | Non-prefixed hook name | ||
| #1395 | Display Eventbrite Events | 96 | 31 | 3k+ | error log print r | |||
| #1396 | Lucky Wheel Giveaway | 96 | 3 | 27 | 500 | Non-prefixed constant | ||
| #1397 | Disable Admin Dashboard Notices – Get a distraction free WordPress backend | 97 | 1 | 7 | 1k+ | Discouraged text-domain loading | ||
| #1398 | Reddit for WooCommerce | 97 | 1 | 17 | 60k+ | Dynamic hook name | ||
| #1399 | Dobby | 97 | 3 | 2 | 900 | Dynamic hook name | ||
| #1400 | Easy Spam Filter – Privacy-Friendly CAPTCHA Alternative with Turnstile for Contact Form 7, WPForms, BuddyPress, Elementor | 97 | 2 | 14 | 1k+ | Dynamic hook name |