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 |
|---|---|---|---|---|---|---|---|---|
| #6401 | Colored Admin Post List | 94 | 1 | 1 | 500 | Missing Version | ||
| #6402 | Convert Rank Math FAQ to Accordion | 94 | 2 | 0 | 1k+ | Output is not escaped | ||
| #6403 | CSS Ready Classes for Gravity Forms | 94 | 1 | 1 | 1k+ | Output is not escaped | ||
| #6404 | Custom Highlight Color | 94 | 1 | 1 | 900 | Output is not escaped | ||
| #6405 | Dashboard Welcome for Elementor | 94 | 1 | 2 | 10k+ | Non-prefixed class | ||
| #6406 | Floating Chat Buttons – Click to Call or Chat, Email | 94 | 1 | 1 | 1k+ | Output is not escaped | ||
| #6407 | Hello Bar Popup Builder | 94 | 2 | 0 | 3k+ | Non Enqueued Script | ||
| #6408 | Social Media Icon Widget – Social Profile Links with Gutenberg Block | 94 | 1 | 2 | 4k+ | Output is not escaped | ||
| #6409 | Sticky Elementor – Sticky Header, Menu Color After Sticky, Logo Swap & Back to Top Button | 94 | 1 | 0 | 500 | Output is not escaped |