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 |
|---|---|---|---|---|---|---|---|---|
| #5451 | CDN Enabler | 69 | 14 | 7 | 10k+ | Output is not escaped | ||
| #5452 | Chatway Live Chat – AI Chatbot, Customer Support, FAQ & Helpdesk Customer Service & Chat Buttons | 69 | 22 | 24 | 30k+ | Text Domain Mismatch | ||
| #5453 | Colorize Mobile Browser Address bar | 69 | 26 | 3 | 1k+ | Output is not escaped | ||
| #5454 | Contact Form 7: Accessible Defaults | 69 | 3 | 28 | 5k+ | Nonce verification recommended | ||
| #5455 | Contact Information Widget | 69 | 35 | 3 | 3k+ | Output is not escaped | ||
| #5456 | Custom Archive Titles | 69 | 39 | 4 | 2k+ | Output is not escaped | ||
| #5457 | Custom Field For WP Job Manager | 69 | 16 | 54 | 900 | Non-prefixed global variable | ||
| #5458 | Dashboard Commander | 69 | 13 | 2 | 900 | Output is not escaped | ||
| #5459 | Debug Bar Rewrite Rules | 69 | 29 | 38 | 800 | Non-prefixed global variable | ||
| #5460 | Easy Auto Reload – Auto Refresh | 69 | 37 | 12 | 1k+ | Text Domain Mismatch | ||
| #5461 | Email as Username for WP-Members | 69 | 15 | 8 | 700 | Text Domain Mismatch | ||
| #5462 | Embed Iframe | 69 | 25 | 6 | 2k+ | wp function not compatible with requires wp | ||
| #5463 | GDPR Compliance for Mailchimp | 69 | 7 | 15 | 2k+ | Missing nonce verification | ||
| #5464 | Google Plus Authorship | 69 | 6 | 15 | 1k+ | trademarked term | ||
| #5465 | Hand Talk | 69 | 34 | 4 | 400 | Output is not escaped | ||
| #5466 | HelpCrunch – Live Chat, Chatbot & Knowledge Base for Customer Service | 69 | 15 | 1 | 2k+ | Output is not escaped | ||
| #5467 | Mailster WordPress Newsletter Plugin | 69 | 14 | 11 | 8k+ | Output is not escaped | ||
| #5468 | Gist All-In-One Marketing – Live Chat, Popups, Email | 69 | 24 | 11 | 500 | Output is not escaped | ||
| #5469 | Media Slider for Photos Images Videos | 69 | 10 | 23 | 2k+ | Missing Version | ||
| #5470 | Patterns Kit | 69 | 182 | 5 | 3k+ | Missing direct file access protection | ||
| #5471 | Payment Gateway for PhonePe and for Woocommerce | 69 | 15 | 14 | 900 | Non Singular String Literal Domain | ||
| #5472 | PDF.js Viewer | 69 | 14 | 38 | 20k+ | Non-prefixed global variable | ||
| #5473 | Post Featured Video | 69 | 4 | 15 | 900 | Missing nonce verification | ||
| #5474 | PrivacyBee – Datenschutz im Autopilot | 69 | 19 | 27 | 600 | Non-prefixed global variable | ||
| #5475 | Rename Taxonomies by WebMan | 69 | 32 | 7 | 1k+ | Missing Arg Domain | ||
| #5476 | Rife Extensions & Templates for Elementor | 69 | 22 | 7 | 20k+ | Output is not escaped | ||
| #5477 | Scroll Down Arrow | 69 | 30 | 30 | 800 | Missing Arg Domain | ||
| #5478 | Search & Filter | 69 | 21 | 28 | 50k+ | Input is not sanitized | ||
| #5479 | Shoppable Social Media Galleries by Sauce | 69 | 13 | 13 | 2k+ | Non-prefixed function | ||
| #5480 | Simple Login Lockdown | 69 | 13 | 6 | 4k+ | Output is not escaped | ||
| #5481 | Simple Mathjax | 69 | 29 | 3 | 4k+ | Short PHP open tag found | ||
| #5482 | Simple YouTube Embed | 69 | 11 | 11 | 5k+ | Nonce verification recommended | ||
| #5483 | SlingBlocks – Gutenberg Blocks by FunnelKit (Formerly WooFunnels) | 69 | 17 | 952 | 7k+ | Non-prefixed global variable | ||
| #5484 | TJ Custom CSS | 69 | 18 | 10 | 8k+ | Output is not escaped | ||
| #5485 | VWE – Voorheen Autodealers.nl | 69 | 23 | 10 | 500 | curl curl setopt | ||
| #5486 | WC Variations Radio Buttons | 69 | 12 | 21 | 3k+ | Non-prefixed global variable | ||
| #5487 | WP Disable Automatic Updates | 69 | 14 | 8 | 2k+ | Output is not escaped | ||
| #5488 | Export WordPress Menus | 69 | 94 | 22 | 1k+ | wp function not compatible with requires wp | ||
| #5489 | WP Mapa Politico España | 69 | 32 | 12 | 400 | Output is not escaped | ||
| #5490 | WP Original Media Path | 69 | 35 | 3 | 6k+ | Non Singular String Literal Domain | ||
| #5491 | WP referrer spam blacklist (fight 2040+ Referrer Spammers in (Google/Matomo) Analytics) | 69 | 9 | 24 | 700 | Non-prefixed constant | ||
| #5492 | Zapper Payments | 69 | 11 | 11 | 600 | Output is not escaped | ||
| #5493 | Add Widget After Content | 70 | 6 | 11 | 7k+ | Setting is missing a sanitization callback | ||
| #5494 | In-feed ads for Google AdSense | 70 | 20 | 20 | 6k+ | Non-prefixed global variable | ||
| #5495 | Ambrosite Next/Previous Page Link Plus | 70 | 11 | 21 | 900 | Interpolated SQL is not prepared | ||
| #5496 | Animentor – Lottie & Bodymovin for Elementor | 70 | 18 | 8 | 4k+ | Output is not escaped | ||
| #5497 | AppScenic – Smart AI Dropshipping | 70 | 16 | 41 | 3k+ | Dynamic hook name | ||
| #5498 | Private Store for WooCommerce B2B & Wholesale by B2BKing | 70 | 86 | 8 | 600 | Text Domain Mismatch | ||
| #5499 | BestPrice Analytics Integration | 70 | 35 | 10 | 1k+ | Text Domain Mismatch | ||
| #5500 | Checkfront Online Booking System | 70 | 32 | 16 | 2k+ | wp function not compatible with requires wp |