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 |
|---|---|---|---|---|---|---|---|---|
| #4851 | Holded integration | 55 | 72 | 23 | 2k+ | Non Singular String Literal Domain | ||
| #4852 | Insert Pages | 55 | 52 | 30 | 40k+ | Output is not escaped | ||
| #4853 | Landingi Landing Pages | 55 | 18 | 23 | 2k+ | Input is not sanitized | ||
| #4854 | LifterLMS Labs | 55 | 51 | 8 | 2k+ | Output is not escaped | ||
| #4855 | Login or Logout Menu Item | 55 | 13 | 7 | 20k+ | Unsafe printing function | ||
| #4856 | LoginPress | wp-login Custom Login Page Customizer | 55 | 125 | 308 | 200k+ | Non-prefixed function | ||
| #4857 | Mailster for WooCommerce | 55 | 23 | 32 | 1k+ | Non-prefixed global variable | ||
| #4858 | LexonRank: AI Link Building, Free Backlinks & SEO Automation | 55 | 15 | 20 | 1k+ | Nonce verification recommended | ||
| #4859 | Marvy – Background Animations for Elementor | 55 | 63 | 34 | 4k+ | Text Domain Mismatch | ||
| #4860 | Mortgage Calculator | 55 | 98 | 16 | 4k+ | Text Domain Mismatch | ||
| #4861 | Page Animations And Transitions | 55 | 89 | 67 | 1k+ | Non Singular String Literal Domain | ||
| #4862 | Fast Page & Post Duplicator | 55 | 12 | 25 | 60k+ | Direct Query | ||
| #4863 | Page Tagger | 55 | 30 | 10 | 2k+ | Output is not escaped | ||
| #4864 | Virtual Robots.txt | 55 | 10 | 21 | 40k+ | Input is not validated | ||
| #4865 | Quick and Easy Testimonials | 55 | 62 | 32 | 3k+ | Non Singular String Literal Domain | ||
| #4866 | Quick Bulk Post & Page Creator | 55 | 43 | 1 | 2k+ | Text Domain Mismatch | ||
| #4867 | Quick Bulk Term Taxonomy Creator | 55 | 37 | 2 | 400 | Text Domain Mismatch | ||
| #4868 | Refer A Friend for WooCommerce by WPGens | 55 | 77 | 21 | 1k+ | Text Domain Mismatch | ||
| #4869 | Semrush Content Toolkit | 55 | 22 | 24 | 2k+ | Non-prefixed global variable | ||
| #4870 | Slider Block by Sliderberg – WordPress Slider & Carousel Plugin for Gutenberg | 55 | 23 | 19 | 1k+ | Output is not escaped | ||
| #4871 | SM Vertical Menu | 55 | 45 | 1 | 400 | Output is not escaped | ||
| #4872 | Free customer chat solution | 55 | 18 | 10 | 500 | Output is not escaped | ||
| #4873 | Text Changer for Welcart | 55 | 477 | 43 | 500 | Text Domain Mismatch | ||
| #4874 | Themeflection Numbers – Number Counter and Animated Numbers | 55 | 224 | 73 | 3k+ | Text Domain Mismatch | ||
| #4875 | Trusona for WordPress | 55 | 8 | 34 | 500 | Non-prefixed function | ||
| #4876 | VK Block Patterns | 55 | 8 | 61 | 100k+ | Non-prefixed function | ||
| #4877 | AAArdvark Accessibility Reports | 55 | 62 | 42 | 700 | Non-prefixed global variable | ||
| #4878 | Payment Integration Wompi – El Salvador | 55 | 50 | 27 | 800 | Text Domain Mismatch | ||
| #4879 | WP Ultimate Review | 55 | 23 | 381 | 70k+ | Non-prefixed global variable | ||
| #4880 | Image Widget by Angie Makes | 55 | 48 | 3 | 500 | Output is not escaped | ||
| #4881 | Yext Plugin | 55 | 16 | 23 | 700 | Non-prefixed function | ||
| #4882 | Admin Bar Fix | 56 | 40 | 18 | 400 | Text Domain Mismatch | ||
| #4883 | AI Copilot – ChatGPT Chatbot & AI Engine for Post Automation | 56 | 65 | 20 | 1k+ | Text Domain Mismatch | ||
| #4884 | All in One SEO Pack Importer | 56 | 17 | 25 | 500 | Direct Query | ||
| #4885 | Anti-Captcha (anti-spam botblocker) | 56 | 23 | 26 | 1k+ | rand mt rand | ||
| #4886 | BotPenguin – Generative AI Chatbot with Live Chat & ChatGPT | 56 | 12 | 7 | 600 | Unsafe printing function | ||
| #4887 | BuddyCommerce: WooCommerce and BuddyPress Integration | 56 | 29 | 19 | 800 | Output is not escaped | ||
| #4888 | Contextual Adminbar Color | 56 | 18 | 16 | 500 | Output is not escaped | ||
| #4889 | Debug Bar Cron | 56 | 73 | 1 | 400 | Output is not escaped | ||
| #4890 | FluentSnippets – High-Performance Code Snippets, Header & Footer Code, Custom CSS & PHP Code Manager | 56 | 31 | 27 | 50k+ | Nonce verification recommended | ||
| #4891 | Easy Digital Downloads Featured Downloads | 56 | 15 | 15 | 1k+ | Output is not escaped | ||
| #4892 | Fluent Connect – Connect ThriveCart with your WordPress and FluentCRM | 56 | 37 | 54 | 600 | curl curl setopt | ||
| #4893 | Grids: Layout builder for WordPress | 56 | 24 | 27 | 2k+ | Missing direct file access protection | ||
| #4894 | Karma Music Player by Kadar | 56 | 47 | 9 | 700 | Output is not escaped | ||
| #4895 | Form data to kintone | 56 | 25 | 22 | 1k+ | Output is not escaped | ||
| #4896 | Kwayy HTML Sitemap | 56 | 13 | 19 | 6k+ | Missing nonce verification | ||
| #4897 | LearnPress – Course Wishlist | 56 | 35 | 22 | 20k+ | Output is not escaped | ||
| #4898 | Free Live Chat Support | 56 | 9 | 20 | 600 | Output is not escaped | ||
| #4899 | MAS Brands for WooCommerce | 56 | 80 | 15 | 10k+ | Text Domain Mismatch | ||
| #4900 | reCAPTCHA for Ninja Forms | 56 | 21 | 9 | 600 | Output is not escaped |