WordPress.Security.EscapeOutput.UnsafePrintingFunction
Unsafe printing function
A printing function is outputting dynamic content without proving that the content is escaped.
Why It Shows Up
The scan saw output through functions such as `printf`, `print`, or similar constructs where the printed values were not escaped for their context.
Why It Matters
Formatted output is still browser output. If any argument contains attacker-controlled content, the page can become vulnerable to cross-site scripting.
How to Fix
- Escape every dynamic argument with `esc_html()`, `esc_attr()`, `esc_url()`, or `wp_kses()` as appropriate.
- Keep translation wrappers and escaping wrappers in the correct order, such as `esc_html__( 'Text', 'text-domain' )` for translated text.
- Avoid marking values as safe unless they are hard-coded or already strictly constrained.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #2851 | jQuery Lightbox For Native Galleries | 73 | 26 | 7 | 5k+ | Text Domain Mismatch | ||
| #2852 | RPS Include Content | 73 | 13 | 2 | 700 | Output is not escaped | ||
| #2853 | Sweet Custom Dashboard | 73 | 27 | 2 | 400 | Missing Arg Domain | ||
| #2854 | Advanced Custom Fields: Accordion Tab Field | 74 | 14 | 11 | 800 | Missing Version | ||
| #2855 | Advanced Custom Fields: Widget Area Field | 74 | 29 | 4 | 400 | Text Domain Mismatch | ||
| #2856 | Calculation For Contact Form 7 | 74 | 21 | 5 | 1k+ | Text Domain Mismatch | ||
| #2857 | Disable cart page for WooCommerce | 74 | 2 | 8 | 6k+ | Input is not sanitized | ||
| #2858 | Duplicate Widget | 74 | 17 | 0 | 1k+ | Output is not escaped | ||
| #2859 | Formidable Honeypot | 74 | 10 | 6 | 400 | Text Domain Mismatch | ||
| #2860 | iframe | 74 | 18 | 0 | 70k+ | Unsafe printing function | ||
| #2861 | Scroll to Top Button | 74 | 16 | 4 | 1k+ | Output is not escaped | ||
| #2862 | Simple Slug Translate | 74 | 32 | 3 | 1k+ | Non Singular String Literal Domain | ||
| #2863 | Sticky Custom Post Types | 74 | 15 | 0 | 500 | Missing Arg Domain | ||
| #2864 | Vello Booking Calendar | 74 | 10 | 2 | 500 | Unsafe printing function | ||
| #2865 | Extra Shipping Rates for WooCommerce | 74 | 15 | 19 | 800 | Non-prefixed global variable | ||
| #2866 | WhatConverts | 74 | 10 | 10 | 7k+ | Non-prefixed function | ||
| #2867 | Gifty | 75 | 38 | 7 | 400 | wp function not compatible with requires wp | ||
| #2868 | Honeypot Anti Spam for Forminator Forms | 75 | 4 | 7 | 1k+ | Missing nonce verification | ||
| #2869 | Hum | 75 | 8 | 2 | 600 | wp function not compatible with requires wp | ||
| #2870 | OXY Re-Login Window | 75 | 5 | 7 | 500 | Missing Version | ||
| #2871 | Wonder PDF Embed | 75 | 53 | 1 | 8k+ | badly named files | ||
| #2872 | WP Change Custom Posts Slugs | 75 | 17 | 4 | 700 | Text Domain Mismatch | ||
| #2873 | WP Disables Updates | 75 | 19 | 7 | 800 | Text Domain Mismatch | ||
| #2874 | 404 Simple Redirect | 76 | 19 | 4 | 900 | Text Domain Mismatch | ||
| #2875 | AMS Google Webmaster Tools | 76 | 10 | 3 | 400 | Output is not escaped | ||
| #2876 | Disable Lazy Load | 76 | 8 | 6 | 400 | Non-prefixed constant | ||
| #2877 | Ocean Posts Slider | 76 | 13 | 14 | 10k+ | Output is not escaped | ||
| #2878 | Post UI Tabs | 76 | 55 | 4 | 400 | Non Singular String Literal Domain | ||
| #2879 | TagPages | 76 | 13 | 4 | 1k+ | Missing Arg Domain | ||
| #2880 | Test jQuery Updates | 76 | 10 | 3 | 1k+ | Unsafe printing function | ||
| #2881 | AffiliateWP – External Referral Links | 77 | 30 | 11 | 800 | Text Domain Mismatch | ||
| #2882 | Custom User Profile Photo | 77 | 16 | 3 | 5k+ | Unsafe printing function | ||
| #2883 | Ecomail | 77 | 7 | 13 | 1k+ | Non-prefixed global variable | ||
| #2884 | FD Footnotes Plugin | 77 | 28 | 5 | 1k+ | Non Singular String Literal Domain | ||
| #2885 | f(x) Editor | 77 | 14 | 3 | 1k+ | Unsafe printing function | ||
| #2886 | Gravity Forms Auto Placeholders | 77 | 9 | 8 | 700 | trademarked term | ||
| #2887 | Mailster Mailgun Integration | 77 | 16 | 5 | 500 | Missing Translators Comment | ||
| #2888 | Pushover Integration for WooCommerce | 77 | 107 | 7 | 800 | Text Domain Mismatch | ||
| #2889 | Display custom fields in the frontend – Post and User Profile Fields | 77 | 17 | 18 | 600 | Non-prefixed global variable | ||
| #2890 | Supreme Google Webfonts | 77 | 12 | 7 | 1k+ | Text Domain Mismatch | ||
| #2891 | WP Editor Widget | 77 | 9 | 6 | 9k+ | Unsafe printing function | ||
| #2892 | Accordion Blocks | 78 | 9 | 3 | 10k+ | Unsafe printing function | ||
| #2893 | Frontend Product Editor for WooCommerce | 78 | 76 | 31 | 500 | Text Domain Mismatch | ||
| #2894 | Uptime Monitoring for WordPress – My Website is Online | 78 | 18 | 7 | 500 | Text Domain Mismatch | ||
| #2895 | PushCrew | 78 | 10 | 0 | 400 | Missing Arg Domain | ||
| #2896 | QuadMenu – Divi Mega Menu | 78 | 17 | 2 | 1k+ | Text Domain Mismatch | ||
| #2897 | Simple Maintenance | 78 | 11 | 5 | 1k+ | Non-prefixed global variable | ||
| #2898 | WEN Responsive Columns | 78 | 13 | 6 | 800 | Unsafe printing function | ||
| #2899 | Exclude Category from Blog | 78 | 10 | 2 | 1k+ | Output is not escaped | ||
| #2900 | WP Downgrade | Specific Core Version | 78 | 12 | 6 | 100k+ | Unsafe printing function |