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 |
|---|---|---|---|---|---|---|---|---|
| #251 | Locatoraid Store Locator | 23 | 318 | 645 | 1k+ | Non-prefixed global variable | ||
| #252 | Custom Login Page Customizer | 23 | 687 | 1,408 | 90k+ | Non-prefixed global variable | ||
| #253 | Login With Ajax – Fast Logins, 2FA, Redirects | 23 | 623 | 520 | 10k+ | Output is not escaped | ||
| #254 | Master Slider – Responsive Touch Slider | 23 | 800 | 408 | 60k+ | Output is not escaped | ||
| #255 | MasterStudy LMS WordPress Plugin – for Online Courses and Education | 23 | 1,419 | 4,875 | 10k+ | Non-prefixed global variable | ||
| #256 | Media Library File Download | 23 | 615 | 1,286 | 1k+ | Non-prefixed global variable | ||
| #257 | Media Library Assistant | 23 | 1,131 | 3,759 | 70k+ | Nonce verification recommended | ||
| #258 | MediaPress | 23 | 904 | 583 | 4k+ | Output is not escaped | ||
| #259 | Menu Image, Icons made easy | 23 | 591 | 1,406 | 100k+ | Non-prefixed global variable | ||
| #260 | Order Bump for WooCommerce | 23 | 1,720 | 1,562 | 600 | Output is not escaped | ||
| #261 | Moloni | 23 | 901 | 356 | 2k+ | Missing Arg Domain | ||
| #262 | MotoPress Appointment Booking | 23 | 2,362 | 857 | 2k+ | Text Domain Mismatch | ||
| #263 | MP3 Audio Player – Music Player, Podcast Player & Radio by Sonaar | 23 | 4,065 | 488 | 20k+ | Text Domain Mismatch | ||
| #264 | MultiParcels Shipping For WooCommerce | 23 | 196 | 362 | 4k+ | Mixed line endings | ||
| #265 | MPG – Multiple Page Generator, Bulk Landing Pages & Programmatic SEO | 23 | 485 | 580 | 2k+ | Missing nonce verification | ||
| #266 | ND Shortcodes | 23 | 621 | 2,426 | 20k+ | Non-prefixed global variable | ||
| #267 | NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization | 23 | 316 | 639 | 90k+ | Output is not escaped | ||
| #268 | Ocean Extra | 23 | 1,494 | 2,107 | 500k+ | Non-prefixed global variable | ||
| #269 | Issues and Series for Newspapers, Magazines, Publishers, Writers | 23 | 346 | 710 | 2k+ | Nonce verification recommended | ||
| #270 | Photo Gallery by 10Web – Mobile-Friendly Image Gallery | 23 | 4,159 | 1,553 | 100k+ | Output is not escaped | ||
| #271 | AI Popup | 23 | 1,224 | 636 | 400 | Text Domain Mismatch | ||
| #272 | Post to Google My Business (Google Business Profile) | 23 | 845 | 1,452 | 10k+ | Non-prefixed global variable | ||
| #273 | Postie | 23 | 408 | 259 | 10k+ | Output is not escaped | ||
| #274 | PowerPress Podcasting plugin by Blubrry | 23 | 4,815 | 2,452 | 20k+ | Output is not escaped | ||
| #275 | Pricing Table by Supsystic | 23 | 1,299 | 447 | 10k+ | Non Singular String Literal Domain | ||
| #276 | Print Anywhere & Create PDFs of Order Receipts, Invoices, Labels & More. | 23 | 1,485 | 444 | 1k+ | Text Domain Mismatch | ||
| #277 | Print My Blog – Print, PDF, & eBook Converter WordPress Plugin | 23 | 1,077 | 1,660 | 8k+ | Non-prefixed global variable | ||
| #278 | Protect Admin | 23 | 606 | 1,300 | 2k+ | Non-prefixed global variable | ||
| #279 | Redirection | 23 | 523 | 457 | 100k+ | Non-prefixed global variable | ||
| #280 | Request a Quote – Quote Forms for Any WordPress Site | 23 | 240 | 1,099 | 900 | Non-prefixed hook name | ||
| #281 | Robo Gallery – Photo & Image Slider | 23 | 1,291 | 530 | 40k+ | Output is not escaped | ||
| #282 | Manago AI & Leadoo AI | 23 | 644 | 429 | 1k+ | Unsafe printing function | ||
| #283 | Schema | 23 | 1,173 | 245 | 40k+ | Text Domain Mismatch | ||
| #284 | SecuPress with Simple SSL – Simple and Performant Security | 23 | 1,697 | 1,601 | 40k+ | Non-prefixed global variable | ||
| #285 | SEO Redirection Plugin – 301 Redirect Manager | 23 | 272 | 727 | 10k+ | Non-prefixed global variable | ||
| #286 | Seriously Simple Podcasting | 23 | 548 | 629 | 30k+ | Non-prefixed hook name | ||
| #287 | Shipment Tracker for Woocommerce | 23 | 477 | 576 | 2k+ | Missing Arg Domain | ||
| #288 | Local Google Analytics for WordPress – caches external requests | 23 | 551 | 199 | 3k+ | Output is not escaped | ||
| #289 | Tag, Category, and Taxonomy Manager – Autotagger Automatically Add Terms | 23 | 405 | 869 | 50k+ | Nonce verification recommended | ||
| #290 | Image Optimizer, Resizer and CDN – Sirv | 23 | 616 | 1,004 | 1k+ | Output is not escaped | ||
| #291 | Site Reviews | 23 | 1,626 | 604 | 60k+ | Output is not escaped | ||
| #292 | Slider Hero with Video Background, Animation | 23 | 1,565 | 1,253 | 3k+ | Text Domain Mismatch | ||
| #293 | Slider by 10Web – Responsive Image Slider | 23 | 5,814 | 976 | 10k+ | Output is not escaped | ||
| #294 | Smart Marketing SMS and Newsletters Forms | 23 | 2,232 | 1,015 | 1k+ | Text Domain Mismatch | ||
| #295 | Super Video player – Fully Customizable Video Player with Playlist | 23 | 1,135 | 1,634 | 2k+ | Non-prefixed global variable | ||
| #296 | Legal Terms and Conditions Popup for User Login and WooCommerce Checkout | 23 | 524 | 237 | 700 | Output is not escaped | ||
| #297 | The Events Calendar | 23 | 3,509 | 3,850 | 700k+ | Text Domain Mismatch | ||
| #298 | ThemeHunk Customizer | 23 | 3,968 | 582 | 6k+ | Text Domain Mismatch | ||
| #299 | Directory Listings WordPress plugin – uListing | 23 | 947 | 1,573 | 1k+ | Non-prefixed global variable | ||
| #300 | Ultimate Fields | 23 | 371 | 458 | 600 | Alternative PHP tag found |