WordPress.Security.EscapeOutput.OutputNotEscaped
Output is not escaped
Dynamic data is printed to the page without an escaping function for the output context.
Why It Shows Up
WordPress Coding Standards detected a variable, option, request value, or function result reaching HTML output without a nearby escaping call.
Why It Matters
Unescaped output can become cross-site scripting when attackers control any part of the value being printed.
How to Fix
- Use `esc_html()` for plain text, `esc_attr()` for attributes, and `esc_url()` for URLs.
- Use `wp_kses()` or `wp_kses_post()` when limited HTML is intentionally allowed.
- Escape as late as possible, right before output, so the selected escaping function matches the final context.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #3051 | Action Scheduler | 38 | 92 | 134 | 20k+ | Exception output is not escaped | ||
| #3052 | Parallax Scroll by adamrob.co.uk | 38 | 102 | 51 | 1k+ | Output is not escaped | ||
| #3053 | Add Customer for WooCommerce | 38 | 229 | 153 | 1k+ | Text Domain Mismatch | ||
| #3054 | Admin Bar Editor – Toolbar Customization with User Role based access & Custom menus | 38 | 56 | 46 | 3k+ | Output is not escaped | ||
| #3055 | Admin Bar & Dashboard Access Control | 38 | 94 | 37 | 3k+ | Text Domain Mismatch | ||
| #3056 | Admin Management Xtended | 38 | 280 | 161 | 5k+ | Output is not escaped | ||
| #3057 | Admin Tools | 38 | 189 | 10 | 3k+ | Unsafe printing function | ||
| #3058 | AdRoll for WooCommerce Stores | 38 | 40 | 25 | 600 | Output is not escaped | ||
| #3059 | AWCA – The Great Analytics Insights for Your eStore | 38 | 238 | 143 | 2k+ | Output is not escaped | ||
| #3060 | Advanced 301 and 302 Redirect | 38 | 81 | 339 | 1k+ | Non-prefixed global variable | ||
| #3061 | Advanced Media Offloader | 38 | 57 | 93 | 5k+ | error log error log | ||
| #3062 | Advanced Product Search For WooCommerce | 38 | 160 | 38 | 4k+ | Text Domain Mismatch | ||
| #3063 | Advanced Sermons | 38 | 833 | 184 | 1k+ | Unsafe printing function | ||
| #3064 | Afterpay Gateway for WooCommerce | 38 | 183 | 62 | 10k+ | Text Domain Mismatch | ||
| #3065 | AK Featured Post Widget | 38 | 135 | 4 | 400 | Output is not escaped | ||
| #3066 | Alphabetic Pagination | 38 | 144 | 117 | 500 | Unsafe printing function | ||
| #3067 | Anant Sites — Elementor & Gutenberg Readymade Template Library Free & Pro Templates | 38 | 20 | 156 | 1k+ | Non-prefixed global variable | ||
| #3068 | Announce from the Dashboard | 38 | 138 | 24 | 7k+ | Non Singular String Literal Domain | ||
| #3069 | Announcement Bar | 38 | 192 | 61 | 3k+ | Non Singular String Literal Domain | ||
| #3070 | Any Mobile Theme Switcher | 38 | 69 | 59 | 20k+ | Output is not escaped | ||
| #3071 | Aplazame | 38 | 34 | 39 | 500 | Non-prefixed global variable | ||
| #3072 | Activity Log – Monitor & Record User Changes | 38 | 81 | 149 | 200k+ | Nonce verification recommended | ||
| #3073 | Ashe Extra | 38 | 109 | 54 | 3k+ | Text Domain Mismatch | ||
| #3074 | Attachments | 38 | 238 | 66 | 8k+ | Unsafe printing function | ||
| #3075 | Audio Story Images | 38 | 46 | 44 | 400 | Output is not escaped | ||
| #3076 | Author Category | 38 | 85 | 25 | 4k+ | Output is not escaped | ||
| #3077 | Auto Prune Posts | 38 | 54 | 57 | 1k+ | Output is not escaped | ||
| #3078 | Autologin Links | 38 | 73 | 74 | 8k+ | Output is not escaped | ||
| #3079 | Automatic Post Tagger | 38 | 592 | 307 | 2k+ | Output is not escaped | ||
| #3080 | bbPress Login Register Links On Forum Topic Pages | 38 | 142 | 36 | 600 | Text Domain Mismatch | ||
| #3081 | Beauty Form Styler for Gravity Forms | 38 | 70 | 93 | 600 | Output is not escaped | ||
| #3082 | Before After Image Comparison Slider for Elementor | 38 | 63 | 36 | 10k+ | Text Domain Mismatch | ||
| #3083 | Bible Verse of the Day | 38 | 378 | 23 | 3k+ | Unsafe printing function | ||
| #3084 | SoftTech-IT bKash, Rocket, Nagad | 38 | 164 | 81 | 6k+ | Text Domain Mismatch | ||
| #3085 | Blogger Importer | 38 | 44 | 39 | 50k+ | Output is not escaped | ||
| #3086 | Bot Block – Stop Spam Referrals in Google Analytics | 38 | 28 | 42 | 600 | Output is not escaped | ||
| #3087 | BuddyPress Follow | 38 | 114 | 67 | 1k+ | Text Domain Mismatch | ||
| #3088 | Cache Warmer | 38 | 32 | 219 | 1k+ | Interpolated SQL is not prepared | ||
| #3089 | Car Route Planner Plugin | 38 | 135 | 17 | 400 | Output is not escaped | ||
| #3090 | Category Posts Widget | 38 | 153 | 26 | 40k+ | Output is not escaped | ||
| #3091 | CC Child Pages | 38 | 63 | 152 | 9k+ | Non-prefixed global variable | ||
| #3092 | Cecabank WooCommerce Plugin | 38 | 63 | 32 | 3k+ | Text Domain Mismatch | ||
| #3093 | Certificate Verification | 38 | 33 | 40 | 1k+ | Output is not escaped | ||
| #3094 | WPAppsDev – CF7 Form Submission Limit | 38 | 104 | 33 | 1k+ | Text Domain Mismatch | ||
| #3095 | Contact Form 7 – Post Fields | 38 | 167 | 25 | 3k+ | Text Domain Mismatch | ||
| #3096 | CF7 to Webhook | 38 | 102 | 72 | 30k+ | Unsafe printing function | ||
| #3097 | Checkout Files Upload for WooCommerce | 38 | 57 | 120 | 7k+ | Input is not sanitized | ||
| #3098 | Classic Editor Plus – WordPress Classic Editor plugin by Felix | 38 | 83 | 42 | 500 | Text Domain Mismatch | ||
| #3099 | Clever Mega Menu for Visual Composer | 38 | 500 | 87 | 1k+ | Output is not escaped | ||
| #3100 | Clever Mega Menu for Elementor | 38 | 835 | 44 | 1k+ | Output is not escaped |