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 |
|---|---|---|---|---|---|---|---|---|
| #751 | MetForm – Contact Form, Survey, Quiz, & Custom Form Builder for Elementor | 28 | 62 | 248 | 600k+ | Non-prefixed global variable | ||
| #752 | Notification – Custom Notifications and Alerts for WordPress | 28 | 186 | 219 | 10k+ | Non-prefixed global variable | ||
| #753 | Opal Service | 28 | 339 | 329 | 900 | Non-prefixed global variable | ||
| #754 | ووکامرس فارسی | 28 | 157 | 215 | 90k+ | Output is not escaped | ||
| #755 | Autopay | 28 | 769 | 334 | 3k+ | Text Domain Mismatch | ||
| #756 | Podcast Importer SecondLine | 28 | 356 | 169 | 4k+ | Text Domain Mismatch | ||
| #757 | Payment Plugins for PayPal WooCommerce | 28 | 229 | 244 | 80k+ | Non-prefixed hook name | ||
| #758 | Rating by BestWebSoft | 28 | 509 | 218 | 500 | Text Domain Mismatch | ||
| #759 | Responsive Lightbox & Gallery | 28 | 139 | 513 | 100k+ | Non-prefixed hook name | ||
| #760 | Temporary Login Without Password | 28 | 128 | 131 | 100k+ | wp function not compatible with requires wp | ||
| #761 | WC Fields Factory | 28 | 194 | 369 | 7k+ | Nonce verification recommended | ||
| #762 | PayZen for WooCommerce | 28 | 258 | 214 | 600 | Output is not escaped | ||
| #763 | Product Gallery Slider, Additional Variation Images for WooCommerce | 28 | 552 | 316 | 20k+ | Output is not escaped | ||
| #764 | Dynamic Product Gallery for WooCommerce | 28 | 414 | 301 | 1k+ | Output is not escaped | ||
| #765 | Email Inquiry & Cart Options for WooCommerce | 28 | 181 | 273 | 800 | Output is not escaped | ||
| #766 | Product Sort and Display for WooCommerce | 28 | 190 | 229 | 2k+ | Output is not escaped | ||
| #767 | WP Booking System – Booking Calendar | 28 | 502 | 549 | 20k+ | Output is not escaped | ||
| #768 | YITH WooCommerce Product Bundles | 28 | 404 | 1,480 | 3k+ | Non-prefixed global variable | ||
| #769 | Accordion Slider Gallery | 29 | 379 | 142 | 1k+ | Text Domain Mismatch | ||
| #770 | Advanced coupon for WooCommerce | 29 | 472 | 242 | 900 | Text Domain Mismatch | ||
| #771 | Attribute Stock for WooCommerce – Shared Stock & Variable Quantities (Lite Version) | 29 | 481 | 313 | 2k+ | Text Domain Mismatch | ||
| #772 | BNE Testimonials | 29 | 521 | 102 | 1k+ | Output is not escaped | ||
| #773 | Businessx Extensions | 29 | 337 | 529 | 1k+ | Non-prefixed function | ||
| #774 | Integration for Salesforce and Contact Form 7, WPForms, Elementor, Formidable, Ninja Forms | 29 | 236 | 369 | 2k+ | Non-prefixed global variable | ||
| #775 | Di Themes Demo Site Importer | 29 | 343 | 183 | 1k+ | Text Domain Mismatch | ||
| #776 | Interactive Image Map Plugin – Draw Attention | 29 | 620 | 227 | 20k+ | Output is not escaped | ||
| #777 | Everest Toolkit | 29 | 145 | 141 | 1k+ | Missing Translators Comment | ||
| #778 | Gianism | 29 | 391 | 154 | 700 | Text Domain Mismatch | ||
| #779 | reCaptcha by BestWebSoft | 29 | 474 | 272 | 100k+ | Text Domain Mismatch | ||
| #780 | Integration for Pipedrive and Contact Form 7, WPForms, Elementor, Ninja Forms | 29 | 625 | 351 | 1k+ | Text Domain Mismatch | ||
| #781 | Wishlist for WooCommerce | 29 | 610 | 296 | 600 | Output is not escaped | ||
| #782 | Login Me Now – Passwordless, Magic Link, OTP & Social Login for WordPress | 29 | 86 | 233 | 500 | Nonce verification recommended | ||
| #783 | Meow Gallery | 29 | 113 | 182 | 10k+ | Direct Query | ||
| #784 | Page View Count | 29 | 106 | 246 | 10k+ | Dynamic hook name | ||
| #785 | Post Views Counter | 29 | 179 | 398 | 200k+ | Non-prefixed hook name | ||
| #786 | Relevant – Related, Featured, Latest, and Popular Posts by BestWebSoft | 29 | 487 | 262 | 800 | Text Domain Mismatch | ||
| #787 | Responder | 29 | 77 | 185 | 3k+ | Non-prefixed global variable | ||
| #788 | Shiptastic for WooCommerce | 29 | 154 | 662 | 10k+ | Non-prefixed global variable | ||
| #789 | Slider by BestWebSoft | 29 | 478 | 336 | 400 | Text Domain Mismatch | ||
| #790 | Social Engine | 29 | 133 | 90 | 600 | Exception output is not escaped | ||
| #791 | BuddyPress Builder for Elementor – BuddyBuilder | 29 | 348 | 329 | 1k+ | Text Domain Mismatch | ||
| #792 | SureForms – Drag & Drop Contact Form & Form Builder, Payment Form, Survey, Quiz & Calculator | 29 | 336 | 198 | 500k+ | Text Domain Mismatch | ||
| #793 | SureMembers – Membership & Content Restriction Plugin | 29 | 359 | 248 | 1k+ | Text Domain Mismatch | ||
| #794 | Visualizer – Tables & Charts Manager with Built-in AI Generator | 29 | 348 | 331 | 20k+ | Output is not escaped | ||
| #795 | Product Carousel Slider & Grid Ultimate for WooCommerce | 29 | 719 | 122 | 6k+ | Text Domain Mismatch | ||
| #796 | Woostify Sites Library | 29 | 229 | 198 | 20k+ | Text Domain Mismatch | ||
| #797 | Xagio SEO – AI Powered SEO | 29 | 2 | 1,273 | 10k+ | Direct Query | ||
| #798 | XML for Google Merchant Center | 29 | 52 | 312 | 3k+ | Non-prefixed global variable | ||
| #799 | Xpro Addons — 140+ Widgets for Elementor | 29 | 27 | 826 | 30k+ | Non-prefixed global variable | ||
| #800 | Dynamic Pricing With Discount Rules for WooCommerce | 30 | 136 | 131 | 5k+ | Output is not escaped |