Squiz.PHP.DiscouragedFunctions.Discouraged
Discouraged PHP function
The plugin uses a PHP or WordPress pattern that coding standards discourage.
Why It Shows Up
Plugin Check found a discouraged function, forbidden function, goto, backtick operator, or similar construct.
Why It Matters
Discouraged patterns are often harder to review, less portable across hosts, or easier to misuse securely.
How to Fix
- Identify why the construct is used and whether WordPress provides a safer API.
- Replace shell execution, dynamic execution, or broad forbidden functions with constrained WordPress APIs.
- If a third-party library triggers the warning, isolate and document it.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #901 | Migrate To Liquid Web & Nexcess | 62 | 15 | 23 | 2k+ | Output is not escaped | ||
| #902 | Pressable Automated Migration | 62 | 15 | 23 | 3k+ | Output is not escaped | ||
| #903 | Migrate to WordPress.com | 62 | 15 | 28 | 2k+ | Output is not escaped | ||
| #904 | Mantenimiento web | 63 | 49 | 15 | 20k+ | Text Domain Mismatch | ||
| #905 | CV Demo Importer | 64 | 21 | 95 | 400 | Non-prefixed global variable | ||
| #906 | DataFeedWatch Connector for WooCommerce | 64 | 16 | 112 | 600 | Non-prefixed hook name | ||
| #907 | Werk aan de Muur | 64 | 48 | 20 | 900 | Non Singular String Literal Domain | ||
| #908 | SocketLabs | 65 | 15 | 18 | 900 | Output is not escaped | ||
| #909 | Web and WooCommerce Addons for WPBakery Builder | 65 | 497 | 123 | 1k+ | Text Domain Mismatch | ||
| #910 | WP-Farsi | 65 | 26 | 36 | 600 | Non-prefixed function | ||
| #911 | Easy PHP Settings | 66 | 34 | 48 | 1k+ | Missing Translators Comment | ||
| #912 | Really Simple CSV Importer | 66 | 38 | 8 | 40k+ | Output is not escaped | ||
| #913 | Safe Redirect Manager | 66 | 9 | 60 | 40k+ | Non-prefixed hook name | ||
| #914 | Ajax add to cart for WooCommerce | 66 | 67 | 31 | 10k+ | Text Domain Mismatch | ||
| #915 | News Magazine X Core | 68 | 63 | 30 | 5k+ | Missing Translators Comment | ||
| #916 | Shiptastic Integration for DHL | 68 | 54 | 36 | 10k+ | Missing Translators Comment | ||
| #917 | Increase Maximum Upload File Size | 68 | 28 | 14 | 40k+ | Missing Arg Domain | ||
| #918 | WP Sanitize Accented Uploads | 68 | 15 | 16 | 800 | Quoted Simple Placeholder | ||
| #919 | WP Wand – Unlimited Content Generation using AI – for OpenAI, Claude, Openrouter and Deepseek | 69 | 452 | 25 | 1k+ | Text Domain Mismatch | ||
| #920 | Automatic Domain Changer | 69 | 37 | 14 | 10k+ | Text Domain Mismatch | ||
| #921 | ELEX WooCommerce Bulk Edit Products, Prices & Attributes (Basic) | 69 | 511 | 51 | 4k+ | Text Domain Mismatch | ||
| #922 | WPThumb | 70 | 30 | 9 | 800 | Output is not escaped | ||
| #923 | Auto Featured Image from Title | 72 | 24 | 4 | 1k+ | Setting is missing a sanitization callback | ||
| #924 | Starter Templates & Sites Pack by ThemeGrill | 72 | 28 | 51 | 70k+ | Non-prefixed hook name | ||
| #925 | Direct Checkout for WooCommerce | 72 | 77 | 35 | 80k+ | Text Domain Mismatch | ||
| #926 | OpenID Connect Generic Client | 73 | 9 | 59 | 10k+ | Non-prefixed hook name | ||
| #927 | Edit Author Slug | 74 | 5 | 8 | 100k+ | Output is not escaped | ||
| #928 | Change Storefront Footer Copyright Text | 74 | 71 | 21 | 4k+ | Text Domain Mismatch | ||
| #929 | Beacon Lead Magnets and Lead Capture | 75 | 8 | 25 | 500 | Nonce verification recommended | ||
| #930 | Force First and Last Name as Display Name | 75 | 5 | 12 | 2k+ | Missing nonce verification | ||
| #931 | Autocomplete WooCommerce Orders | 76 | 70 | 55 | 30k+ | Text Domain Mismatch | ||
| #932 | FluentPlayer – Video Player With Forms & Lead Capture | 76 | 5 | 40 | 1k+ | Database parameter is not escaped | ||
| #933 | Rearrange Products for WooCommerce | 76 | 1 | 22 | 20k+ | Input is not sanitized | ||
| #934 | Action Network | 76 | 19 | 17 | 400 | error log error log | ||
| #935 | RSS Aggregator by Feedzy – Feed to Post, Autoblogging, News & YouTube Video Feeds Aggregator | 77 | 37 | 282 | 40k+ | Non-prefixed global variable | ||
| #936 | Index WP Users For Speed | 77 | 10 | 35 | 1k+ | Non-prefixed global variable | ||
| #937 | SureRank SEO – Smart Assistant with Meta Tags, Social Preview, XML Sitemap, and Schema | 77 | 58 | 94 | 300k+ | Non-prefixed hook name | ||
| #938 | Template Kit – Import | 77 | 41 | 60 | 400k+ | Non-prefixed global variable | ||
| #939 | Grabber for QQWorld Auto Save Images | 79 | 17 | 3 | 400 | Non Singular String Literal Domain | ||
| #940 | Related Products Manager for WooCommerce | 79 | 9 | 43 | 1k+ | Non-prefixed global variable | ||
| #941 | New Relic Reporting for WordPress | 79 | 4 | 16 | 600 | Nonce verification recommended | ||
| #942 | Interlinks Manager – Internal Links Optimizer | 80 | 17 | 13 | 8k+ | Database parameter is not escaped | ||
| #943 | Eli's PHP Compatibility Scanner | 80 | 1 | 22 | 400 | Missing nonce verification | ||
| #944 | Ailo – AI Slug Translator | 80 | 8 | 14 | 1k+ | wp function not compatible with requires wp | ||
| #945 | Media Library File Size | 80 | 3 | 15 | 6k+ | Nonce verification recommended | ||
| #946 | Nudgify Social Proof | 80 | 3 | 12 | 600 | Discouraged PHP function | ||
| #947 | Pro Mime Types – Manage file media types | 80 | 55 | 98 | 2k+ | Non-prefixed global variable | ||
| #948 | ActivityPub | 81 | 67 | 305 | 6k+ | Non-prefixed global variable | ||
| #949 | Appointment Bookings for Zoom GoogleMeet and more – Wappointment | 81 | 22 | 52 | 1k+ | Non-prefixed class | ||
| #950 | Bulk Post Importer | 84 | 1 | 38 | 900 | Missing nonce verification |