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 |
|---|---|---|---|---|---|---|---|---|
| #1051 | Materialis Companion | 36 | 129 | 67 | 6k+ | Unsafe printing function | ||
| #1052 | Qubely – Advanced Gutenberg Blocks | 36 | 39 | 78 | 8k+ | Request data is not unslashed | ||
| #1053 | Direct Checkout – Quick View – Buy Now For WooCommerce | 36 | 90 | 112 | 2k+ | Missing nonce verification | ||
| #1054 | Rara One Click Demo Import | 36 | 122 | 98 | 20k+ | Missing Translators Comment | ||
| #1055 | Responsive Testimonials | 36 | 252 | 32 | 400 | Text Domain Mismatch | ||
| #1056 | Speed Optimizer – The All-In-One Performance-Boosting Plugin | 36 | 45 | 96 | 1m+ | Non-prefixed hook name | ||
| #1057 | ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution | 36 | 63 | 667 | 100k+ | Non-prefixed global variable | ||
| #1058 | SureContact – Newsletters, Email Marketing, Automation, Revenue Tracking & CRM | 36 | 314 | 132 | 5k+ | Text Domain Mismatch | ||
| #1059 | Advance Side Cart, Ajax Cart & Floating Cart for WooCommerce | 36 | 37 | 121 | 6k+ | Non-prefixed global variable | ||
| #1060 | Out of Stock Message Manager for WooCommerce | 36 | 293 | 95 | 2k+ | Text Domain Mismatch | ||
| #1061 | Quantity Plus Minus Button for WooCommerce | 36 | 83 | 84 | 10k+ | Output is not escaped | ||
| #1062 | WP Socializer – Simple & Easy Social Media Share Icons | 36 | 214 | 51 | 10k+ | Output is not escaped | ||
| #1063 | Zeno – AI-Powered Chatbot | 36 | 311 | 131 | 500 | Text Domain Mismatch | ||
| #1064 | Add to Cart Redirect for WooCommerce | 37 | 215 | 141 | 8k+ | Text Domain Mismatch | ||
| #1065 | PiWeb Advanced Flat rate / Conditional shipping for WooCommerce | 37 | 84 | 192 | 2k+ | wp function not compatible with requires wp | ||
| #1066 | Advanced Media Offloader | 37 | 59 | 93 | 5k+ | error log error log | ||
| #1067 | PiWeb Conditional cart fee / Extra charge rule for WooCommerce | 37 | 164 | 214 | 2k+ | Text Domain Mismatch | ||
| #1068 | Disclaimer Popup | 37 | 313 | 53 | 1k+ | Text Domain Mismatch | ||
| #1069 | Eazy CF Captcha | 37 | 93 | 54 | 500 | Text Domain Mismatch | ||
| #1070 | Email Encoder – Protect Email Addresses and Phone Numbers | 37 | 10 | 150 | 90k+ | Non-prefixed global variable | ||
| #1071 | Encyclopedia / Glossary / Wiki | 37 | 263 | 48 | 1k+ | Output is not escaped | ||
| #1072 | Get Custom Field Values | 37 | 40 | 44 | 1k+ | Output is not escaped | ||
| #1073 | Google for WooCommerce | 37 | 328 | 121 | 800k+ | Exception output is not escaped | ||
| #1074 | GS Portfolio for Envato | 37 | 155 | 75 | 4k+ | Text Domain Mismatch | ||
| #1075 | Language Switcher | 37 | 81 | 105 | 1k+ | Missing Translators Comment | ||
| #1076 | LH Archived Post Status | 37 | 150 | 64 | 3k+ | Text Domain Mismatch | ||
| #1077 | PiWeb Live sales notification for WooCommerce | 37 | 289 | 77 | 30k+ | Text Domain Mismatch | ||
| #1078 | MailingBoss WP Plugin | 37 | 108 | 30 | 600 | Output is not escaped | ||
| #1079 | CrawlWP SEO – Instant Search Engine Indexing & SEO Performance Monitor | 37 | 47 | 90 | 40k+ | Dynamic hook name | ||
| #1080 | Poptics – Popup Builder, Email Opt-ins, Exit-Intent & WooCommerce Popups Sales | 37 | 59 | 64 | 2k+ | SQL query is not prepared | ||
| #1081 | Product page shipping calculator for WooCommerce | 37 | 217 | 117 | 1k+ | Text Domain Mismatch | ||
| #1082 | SB RSS feed plus | 37 | 172 | 24 | 1k+ | Output is not escaped | ||
| #1083 | Simple Countdown Timer | 37 | 110 | 113 | 1k+ | Missing Arg Domain | ||
| #1084 | Social Comments | 37 | 59 | 32 | 400 | Output is not escaped | ||
| #1085 | Swifty Bar, sticky bar by WPGens | 37 | 112 | 81 | 400 | Output is not escaped | ||
| #1086 | Tracking Script Manager | 37 | 82 | 57 | 2k+ | Non Singular String Literal Domain | ||
| #1087 | Ultimate Tag Cloud Widget | 37 | 715 | 16 | 4k+ | Output is not escaped | ||
| #1088 | Views for WPForms – Display & Edit WPForms Entries on your site frontend | 37 | 80 | 64 | 1k+ | Output is not escaped | ||
| #1089 | Innovs WPBakery Visual Composer WHMCS Elements | 37 | 154 | 24 | 2k+ | Text Domain Mismatch | ||
| #1090 | WP WooCommerce Mailchimp | 37 | 62 | 85 | 6k+ | Non-prefixed hook name | ||
| #1091 | WooCommerce PayPal Payments | 37 | 194 | 110 | 800k+ | Exception output is not escaped | ||
| #1092 | WP Category Permalink | 37 | 75 | 31 | 2k+ | Output is not escaped | ||
| #1093 | WP-Cron Control | 37 | 54 | 22 | 1k+ | Output is not escaped | ||
| #1094 | ACF-VC Integrator | 38 | 190 | 91 | 3k+ | Output is not escaped | ||
| #1095 | Action Scheduler | 38 | 92 | 134 | 20k+ | Exception output is not escaped | ||
| #1096 | Author Category | 38 | 85 | 25 | 4k+ | Output is not escaped | ||
| #1097 | Darkify – Dark Mode & Night Mode for Website & Admin (Dark Theme Included) | 38 | 38 | 183 | 600 | Non-prefixed global variable | ||
| #1098 | PiWeb Product Enquiry or product catalog for WooCommerce | 38 | 255 | 145 | 1k+ | Text Domain Mismatch | ||
| #1099 | EU Cookie Law Compliance | 38 | 151 | 22 | 2k+ | Non Singular String Literal Domain | ||
| #1100 | GoDaddy Payments for WooCommerce | 38 | 58 | 65 | 2k+ | Output is not escaped |