WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
Non-prefixed function
The plugin defines a function 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 function 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 |
|---|---|---|---|---|---|---|---|---|
| #3151 | Desert Companion | 68 | 412 | 837 | 20k+ | Non-prefixed global variable | ||
| #3152 | Exchange Rates Today | 68 | 9 | 10 | 400 | Non-prefixed function | ||
| #3153 | Free Assets Library – Openverse/Pixabay 600+ Million Images | 68 | 44 | 36 | 4k+ | Text Domain Mismatch | ||
| #3154 | Guestplan Booking Widget | 68 | 43 | 6 | 1k+ | Text Domain Mismatch | ||
| #3155 | Postepay Gateway per Woocommerce | 68 | 36 | 4 | 1k+ | Text Domain Mismatch | ||
| #3156 | Custom Form Builder, Contact Forms, Payment Forms, Surveys, Polls | 68 | 21 | 18 | 900 | Output is not escaped | ||
| #3157 | Reusable Gutenberg Blocks Widget | 68 | 24 | 9 | 500 | Output is not escaped | ||
| #3158 | Series | 68 | 55 | 6 | 2k+ | Text Domain Mismatch | ||
| #3159 | Smartarget – Chat Buttons & Engagement Apps | 68 | 31 | 11 | 1k+ | Non Singular String Literal Domain | ||
| #3160 | Export and Import Users and Customers | 68 | 223 | 662 | 60k+ | Non-prefixed global variable | ||
| #3161 | WiserReview Product Reviews for WooCommerce | 68 | 21 | 110 | 900 | Non-prefixed global variable | ||
| #3162 | Product Category Slider for WooCommerce | 68 | 21 | 104 | 800 | Non-prefixed hook name | ||
| #3163 | WP and Divi Icons | 68 | 201 | 56 | 2k+ | wp function not compatible with requires wp | ||
| #3164 | Ever Accounting – Accounting & Invoicing Solution for Small Businesses | 68 | 69 | 661 | 1k+ | Non-prefixed hook name | ||
| #3165 | WP Favicon | 68 | 25 | 9 | 500 | Non Singular String Literal Domain | ||
| #3166 | WP User Avatars | 68 | 5 | 20 | 20k+ | Input is not sanitized | ||
| #3167 | AdOpt | Easy Multi-Regulations Cookie Banner. | 69 | 22 | 27 | 7k+ | Missing direct file access protection | ||
| #3168 | Age Gate | 69 | 61 | 139 | 40k+ | Missing direct file access protection | ||
| #3169 | WP Wand – Unlimited Content Generation using AI – for OpenAI, Claude, Openrouter and Deepseek | 69 | 452 | 25 | 1k+ | Text Domain Mismatch | ||
| #3170 | CallRail Phone Call Tracking | 69 | 11 | 12 | 10k+ | Input is not validated | ||
| #3171 | Contact Form 7: Accessible Defaults | 69 | 3 | 28 | 5k+ | Nonce verification recommended | ||
| #3172 | CryptX | 69 | 11 | 30 | 10k+ | Missing nonce verification | ||
| #3173 | Debug Bar Rewrite Rules | 69 | 29 | 38 | 800 | Non-prefixed global variable | ||
| #3174 | ELEX WooCommerce Bulk Edit Products, Prices & Attributes (Basic) | 69 | 511 | 51 | 4k+ | Text Domain Mismatch | ||
| #3175 | GDPR Compliance for Mailchimp | 69 | 7 | 15 | 2k+ | Missing nonce verification | ||
| #3176 | Patterns Kit | 69 | 182 | 5 | 3k+ | Missing direct file access protection | ||
| #3177 | Payment Gateway for PhonePe and for Woocommerce | 69 | 15 | 14 | 900 | Non Singular String Literal Domain | ||
| #3178 | PDF.js Viewer | 69 | 14 | 38 | 20k+ | Non-prefixed global variable | ||
| #3179 | Search & Filter | 69 | 21 | 28 | 50k+ | Input is not sanitized | ||
| #3180 | Shoppable Social Media Galleries by Sauce | 69 | 13 | 13 | 2k+ | Non-prefixed function | ||
| #3181 | Sticky Header Effects for Elementor | 69 | 354 | 71 | 300k+ | Text Domain Mismatch | ||
| #3182 | TJ Custom CSS | 69 | 18 | 10 | 8k+ | Output is not escaped | ||
| #3183 | Easy Username Updater | 69 | 19 | 28 | 10k+ | Missing Arg Domain | ||
| #3184 | WC Variations Radio Buttons | 69 | 12 | 21 | 3k+ | Non-prefixed global variable | ||
| #3185 | WP Mapa Politico España | 69 | 32 | 12 | 400 | Output is not escaped | ||
| #3186 | Zapper Payments | 69 | 11 | 11 | 600 | Output is not escaped | ||
| #3187 | In-feed ads for Google AdSense | 70 | 20 | 20 | 6k+ | Non-prefixed global variable | ||
| #3188 | ConvertCalculator: Build Cost, Price, Quotation, ROI Interactive Calculators | 70 | 9 | 12 | 800 | Output is not escaped | ||
| #3189 | Yoast Duplicate Post | 70 | 8 | 88 | 4m+ | Nonce verification recommended | ||
| #3190 | Easy Hotel – Powerful Hotel Booking | 70 | 4 | 1,900 | 800 | Non-prefixed global variable | ||
| #3191 | FAZ Cookie Manager | 70 | 315 | 900 | Non-prefixed hook name | |||
| #3192 | Free Gift Product For WooCommerce | 70 | 9 | 77 | 800 | Non-prefixed global variable | ||
| #3193 | Host Header Injection Fix | 70 | 9 | 8 | 400 | Output is not escaped | ||
| #3194 | Press This | 70 | 1 | 44 | 5k+ | Non-prefixed hook name | ||
| #3195 | Remove Taxonomy Base Slug | 70 | 12 | 18 | 5k+ | Deprecated parameter: get_terms parameter 2 | ||
| #3196 | Search and Replace | 70 | 7 | 9 | 10k+ | Input is not sanitized | ||
| #3197 | Show IP address | 70 | 6 | 20 | 1k+ | Input is not sanitized | ||
| #3198 | Simple Sticky Header on Scroll | 70 | 31 | 8 | 900 | Output is not escaped | ||
| #3199 | SubHeading | 70 | 22 | 13 | 1k+ | Non Singular String Literal Domain | ||
| #3200 | Support Me | 70 | 12 | 6 | 900 | Unsafe printing function |