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 |
|---|---|---|---|---|---|---|---|---|
| #2951 | Visual Term Description Editor | 82 | 11 | 5 | 10k+ | Missing Arg Domain | ||
| #2952 | Optimize Images Resizing | 83 | 12 | 4 | 6k+ | Unsafe printing function | ||
| #2953 | Photospace Responsive Gallery | 83 | 115 | 14 | 900 | Text Domain Mismatch | ||
| #2954 | Post Meta Inspector | 83 | 6 | 1 | 2k+ | Unsafe printing function | ||
| #2955 | Upload Url and Path Enabler | 83 | 10 | 1 | 2k+ | Missing Arg Domain | ||
| #2956 | Floating Publish Button | 84 | 5 | 4 | 1k+ | Unsafe printing function | ||
| #2957 | Public Post Preview Configurator | 84 | 14 | 6 | 10k+ | Non Singular String Literal Domain | ||
| #2958 | ACF Nav Menu Field | 85 | 16 | 6 | 2k+ | Text Domain Mismatch | ||
| #2959 | ACF YouTube Picker | 85 | 82 | 7 | 400 | Text Domain Mismatch | ||
| #2960 | Advanced Custom Fields: Nav Menu Field | 85 | 27 | 6 | 8k+ | Missing Arg Domain | ||
| #2961 | Stock market charts from finviz | 85 | 8 | 1 | 400 | Missing Arg Domain | ||
| #2962 | Free Shipping Per Product for WooCommerce | 85 | 21 | 3 | 3k+ | Text Domain Mismatch | ||
| #2963 | WP Revisions Control | 85 | 9 | 6 | 40k+ | wp function not compatible with requires wp | ||
| #2964 | BNE Gallery Extended | 86 | 8 | 0 | 1k+ | Unsafe printing function | ||
| #2965 | Custom Content Width | 86 | 8 | 0 | 1k+ | Text Domain Mismatch | ||
| #2966 | Heroic Glossary – Block for building Glossaries, Dictionaries and more | 86 | 8 | 7 | 3k+ | Text Domain Mismatch | ||
| #2967 | PageView | 86 | 17 | 2 | 1k+ | wp function not compatible with requires wp | ||
| #2968 | Taxonomy TinyMCE | 86 | 10 | 1 | 900 | Unsafe printing function | ||
| #2969 | Sold Individually for WooCommerce Product Variations | 86 | 2 | 6 | 800 | Missing nonce verification | ||
| #2970 | Яндекс Поделиться | 86 | 9 | 4 | 900 | Unsafe printing function | ||
| #2971 | Customizer Search | 87 | 10 | 1 | 50k+ | Missing direct file access protection | ||
| #2972 | Slide-out Menu – Mobile Friendly modern navigation | 87 | 5 | 22 | 500 | Non-prefixed global variable | ||
| #2973 | ZI Hide price and add to cart for WooCommerce | 87 | 15 | 7 | 1k+ | wp function not compatible with requires wp | ||
| #2974 | Cudazi Scroll to Top | 88 | 7 | 4 | 600 | Missing Version | ||
| #2975 | Automatically Hierarchic Categories in Menu | 89 | 9 | 4 | 2k+ | Post Not In exclude | ||
| #2976 | RT Slider | 89 | 9 | 2 | 800 | Missing direct file access protection | ||
| #2977 | Turn Off Comments — Hide Comment Box and Stop Spam | 89 | 3 | 4 | 1k+ | Non-prefixed function | ||
| #2978 | Shipping Live Rates and Access Points for UPS for WooCommerce | 90 | 6 | 11 | 7k+ | Non-prefixed global variable | ||
| #2979 | Link Verification for Mastodon | 90 | 4 | 0 | 400 | Unsafe printing function | ||
| #2980 | Order Status Control for WooCommerce | 90 | 23 | 4 | 5k+ | Text Domain Mismatch | ||
| #2981 | Change Author | 91 | 8 | 0 | 1k+ | Missing Arg Domain | ||
| #2982 | getLaw WP API Client | 91 | 11 | 4 | 600 | curl curl setopt | ||
| #2983 | Hotlink File Prevention | 91 | 6 | 1 | 600 | file system operations is writable | ||
| #2984 | Jetpack Lite | 91 | 3 | 7 | 600 | Non-prefixed function | ||
| #2985 | Remove Image Links | 91 | 5 | 10 | 900 | Non-prefixed function | ||
| #2986 | REST API Toolbox | 91 | 25 | 0 | 2k+ | Missing Arg Domain | ||
| #2987 | Change Text Case | 92 | 4 | 1 | 2k+ | Missing Arg Domain | ||
| #2988 | Customizer Custom CSS | 92 | 5 | 2 | 400 | Deprecated parameter: load_plugin_textdomain parameter 2 | ||
| #2989 | Picture Gallery – Frontend Image Uploads, AJAX Photo List | 92 | 5 | 2 | 400 | date date | ||
| #2990 | Disable WooCommerce Reviews | 93 | 2 | 4 | 2k+ | trademarked term |