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 |
|---|---|---|---|---|---|---|---|---|
| #1001 | Product Input Fields for WooCommerce | 35 | 18 | 84 | 4k+ | Non-prefixed function | ||
| #1002 | Restrict Elementor Widgets, Columns and Sections | 35 | 18 | 53 | 500 | Non-prefixed function | ||
| #1003 | SEO Slider | 35 | 242 | 17 | 1k+ | Text Domain Mismatch | ||
| #1004 | FlexTable – Data Table Sync with Google Sheets | 35 | 20 | 78 | 4k+ | Direct Query | ||
| #1005 | SiteGround Migrator | 35 | 113 | 74 | 70k+ | Missing Arg Domain | ||
| #1006 | Solid Performance – Your No-Code Caching, Performance, & Page Speed Solution | 35 | 75 | 61 | 4k+ | Exception output is not escaped | ||
| #1007 | Spacious Toolkit | 35 | 48 | 94 | 700 | Non-prefixed global variable | ||
| #1008 | Sprout Invoices – Client Invoicing & Estimates | 35 | 40 | 1,798 | 1k+ | Non-prefixed hook name | ||
| #1009 | TailPress – Tailwind for WordPress | 35 | 23 | 22 | 500 | Output is not escaped | ||
| #1010 | Advance Product Search- Voice & Ajax Search for WooCommerce | 35 | 125 | 92 | 10k+ | Text Domain Mismatch | ||
| #1011 | Transcoder | 35 | 42 | 111 | 500 | Non-prefixed function | ||
| #1012 | Void Elementor Post Grid Addon for Elementor Page builder | 35 | 189 | 93 | 3k+ | Text Domain Mismatch | ||
| #1013 | Conditional Payments and Shipping for WooCommerce | 35 | 338 | 27 | 1k+ | Text Domain Mismatch | ||
| #1014 | Multi-Carrier ShipStation Shipping Rates for WooCommerce | 35 | 403 | 71 | 900 | Non Singular String Literal Domain | ||
| #1015 | Converter for Media – Optimize images | Convert WebP & AVIF | 35 | 133 | 53 | 500k+ | curl curl setopt | ||
| #1016 | Translate WordPress with Weglot – Multilingual AI Translation | 35 | 37 | 115 | 60k+ | Non-prefixed global variable | ||
| #1017 | wePOS – Point Of Sale (POS) for WooCommerce & Dokan | 35 | 47 | 66 | 1k+ | Output is not escaped | ||
| #1018 | Wired Impact Volunteer Management | 35 | 253 | 175 | 1k+ | Output is not escaped | ||
| #1019 | ALD – Dropshipping and Fulfillment for AliExpress and WooCommerce | 35 | 50 | 343 | 10k+ | Request data is not unslashed | ||
| #1020 | Custom Payment Gateways for WooCommerce | 35 | 202 | 31 | 3k+ | Non Singular String Literal Domain | ||
| #1021 | Abandoned Cart Lite for WooCommerce | 35 | 84 | 161 | 20k+ | Non-prefixed global variable | ||
| #1022 | Call for Price for WooCommerce | 35 | 5 | 37 | 8k+ | Non-prefixed hook name | ||
| #1023 | Conversion Tracking for WooCommerce | 35 | 74 | 61 | 20k+ | Output is not escaped | ||
| #1024 | Payment Gateway for PayPal Pro & PayPal Checkout for WooCommerce | 35 | 67 | 147 | 2k+ | Request data is not unslashed | ||
| #1025 | Invoices for WooCommerce | 35 | 55 | 168 | 10k+ | Non-prefixed global variable | ||
| #1026 | PDF Invoices & Packing Slips for WooCommerce | 35 | 35 | 956 | 300k+ | Non-prefixed hook name | ||
| #1027 | Easy Accept Payments via PayPal | 35 | 322 | 128 | 7k+ | Text Domain Mismatch | ||
| #1028 | WP Dark Mode – Improve Accessibility with AI Powered Dark Theme | 35 | 20 | 160 | 20k+ | Non-prefixed global variable | ||
| #1029 | WP Geo | 35 | 180 | 84 | 900 | Output is not escaped | ||
| #1030 | Mail logging – WP Mail Catcher | 35 | 232 | 157 | 20k+ | Text Domain Mismatch | ||
| #1031 | WP Mailto Links – Protect Email Addresses | 35 | 95 | 69 | 8k+ | Output is not escaped | ||
| #1032 | WP Menu Custom Fields | 35 | 11 | 6 | 700 | Hidden files included | ||
| #1033 | WP-PageNavi | 35 | 84 | 95 | 500k+ | Non Singular String Literal Domain | ||
| #1034 | WPElemento Importer | 35 | 126 | 123 | 9k+ | Text Domain Mismatch | ||
| #1035 | WPFront User Role Editor | 35 | 333 | 578 | 30k+ | Output is not escaped | ||
| #1036 | Product Labels For Woocommerce (Sale Badges) | 36 | 90 | 48 | 10k+ | Output is not escaped | ||
| #1037 | Breadcrumb NavXT | 36 | 102 | 111 | 800k+ | Non Singular String Literal Domain | ||
| #1038 | CM Header and Footer – Add custom scripts and styles to your header and footer with ease | 36 | 230 | 198 | 1k+ | Output is not escaped | ||
| #1039 | CMB2 | 36 | 148 | 19 | 300k+ | Output is not escaped | ||
| #1040 | Dynamic Front-End Heartbeat Control | 36 | 217 | 111 | 1k+ | Text Domain Mismatch | ||
| #1041 | WP CTA – Call Now Button, Sticky Button & Call to Action Builder | 36 | 1 | 433 | 2k+ | Non-prefixed global variable | ||
| #1042 | Enhanced Media Library | 36 | 361 | 117 | 60k+ | Unsafe printing function | ||
| #1043 | PiWeb Product Enquiry or product catalog for WooCommerce | 36 | 290 | 145 | 1k+ | Text Domain Mismatch | ||
| #1044 | Genesis Sandbox Featured Content Widget | 36 | 229 | 24 | 1k+ | Text Domain Mismatch | ||
| #1045 | Gutena Kit – Gutenberg Blocks and Templates | 36 | 39 | 87 | 1k+ | Nonce verification recommended | ||
| #1046 | Page Speed Optimizer: HTTP/2 Push, Async JavaScript, and Defer CSS | 36 | 68 | 33 | 6k+ | Output is not escaped | ||
| #1047 | Image Watermark | 36 | 76 | 179 | 40k+ | Missing nonce verification | ||
| #1048 | Insert Headers and Footers Code – HT Script | 36 | 391 | 34 | 7k+ | Text Domain Mismatch | ||
| #1049 | Jetpack VideoPress | 36 | 618 | 224 | 7k+ | Text Domain Mismatch | ||
| #1050 | Materialis Companion | 36 | 129 | 67 | 6k+ | Unsafe printing function |