PluginCheck.CodeAnalysis.WriteFile.PluginDirectoryWrite
Plugin Directory Write
The plugin writes files in or near plugin-controlled directories.
Why It Shows Up
Plugin Check found file creation or modification behavior that may affect the plugin directory or executable files.
Why It Matters
Runtime writes to plugin code directories can break updates, create permission issues, or introduce supply-chain risk.
How to Fix
- Store generated data in uploads, cache, or another WordPress-approved writable location.
- Validate paths and file names against strict allowlists.
- Avoid modifying plugin source files at runtime.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #1 | BulletProof Security | 0 | 5,048 | 4,949 | 20k+ | Output is not escaped | ||
| #2 | Plugin Check (PCP) | 0 | 128 | 132 | 10k+ | Exception output is not escaped | ||
| #3 | Themify Builder | 9 | 5,304 | 2,136 | 5k+ | Text Domain Mismatch | ||
| #4 | Efí Bank | 17 | 886 | 553 | 400 | Exception output is not escaped | ||
| #5 | WPtouch – Make your WordPress Website Mobile-Friendly | 17 | 1,466 | 325 | 50k+ | Text Domain Mismatch | ||
| #6 | Property Hive | 18 | 1,957 | 6,027 | 3k+ | Missing nonce verification | ||
| #7 | Realtyna Organic IDX plugin + WPL Real Estate | 18 | 930 | 3,636 | 2k+ | Non-prefixed global variable | ||
| #8 | Shopping Cart & eCommerce Store | 18 | 5,373 | 17,466 | 3k+ | Non-prefixed global variable | ||
| #9 | WPPizza – A Restaurant Plugin | 18 | 4,689 | 2,703 | 1k+ | Text Domain Mismatch | ||
| #10 | Block Slider – Responsive Image Slider, Video Slider & Post Slider | 19 | 555 | 1,291 | 3k+ | Non-prefixed global variable | ||
| #11 | Go Fetch Jobs (for WP Job Manager) | 19 | 1,410 | 1,741 | 700 | Non-prefixed global variable | ||
| #12 | Matomo Analytics – Powerful, Privacy-First Insights for WordPress | 19 | 1,900 | 877 | 100k+ | Exception output is not escaped | ||
| #13 | Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) | 19 | 536 | 379 | 3m+ | Missing Translators Comment | ||
| #14 | Scrollsequence – Cinematic Scroll Image Animation Plugin | 19 | 878 | 1,528 | 4k+ | Non-prefixed global variable | ||
| #15 | SendPress Newsletters | 19 | 2,293 | 1,422 | 1k+ | Output is not escaped | ||
| #16 | WPQiNiu七牛云对象存储 | 19 | 138 | 612 | 400 | Non-prefixed global variable | ||
| #17 | Post Form – Registration Form – Profile Form for User Profiles – Frontend Content Forms for User Submissions (UGC) | 20 | 736 | 2,112 | 900 | Non-prefixed global variable | ||
| #18 | Event Espresso – Event Registration & Ticketing Sales | 20 | 12,698 | 2,135 | 600 | Text Domain Mismatch | ||
| #19 | Brevo – Email, SMS, Web Push, Chat, and more. | 20 | 460 | 646 | 100k+ | Request data is not unslashed | ||
| #20 | Microthemer Lite – Visual Editor to Customize CSS | 20 | 1,004 | 1,699 | 10k+ | Non-prefixed global variable | ||
| #21 | Powered Cache – Caching and Optimization for WordPress – Easily Improve PageSpeed & Web Vitals Score | 20 | 147 | 231 | 3k+ | Exception output is not escaped | ||
| #22 | Remove Add to Cart WooCommerce | 20 | 616 | 1,378 | 4k+ | Non-prefixed global variable | ||
| #23 | Events Manager – OpenStreetMaps | 20 | 559 | 444 | 700 | Output is not escaped | ||
| #24 | Backup Migration | 21 | 981 | 1,093 | 80k+ | Non-prefixed global variable | ||
| #25 | Kadence Security – Password, Two Factor Authentication, and Brute Force Protection | 21 | 1,060 | 957 | 700k+ | Missing Translators Comment | ||
| #26 | Captcha Them All | 21 | 300 | 323 | 5k+ | Output is not escaped | ||
| #27 | SMS Extension for Contact Form 7 | 21 | 720 | 1,387 | 400 | Non-prefixed global variable | ||
| #28 | Comet Cache | 21 | 857 | 245 | 20k+ | Output is not escaped | ||
| #29 | Daily Prayer Time | 21 | 947 | 1,780 | 1k+ | Non-prefixed global variable | ||
| #30 | DELUCKS SEO | 21 | 362 | 1,171 | 400 | Missing nonce verification | ||
| #31 | Duplicator – Backups & Migration Plugin – Cloud Backups, Scheduled Backups, & More | 21 | 2,572 | 1,277 | 1m+ | Output is not escaped | ||
| #32 | Feeds for YouTube (YouTube video, channel, and gallery plugin) | 21 | 558 | 978 | 100k+ | Output is not escaped | ||
| #33 | Leyka | 21 | 257 | 3,446 | 2k+ | Request data is not unslashed | ||
| #34 | Mapster WP Maps | 21 | 3,440 | 2,894 | 3k+ | Text Domain Mismatch | ||
| #35 | Points Management System For Gamification, Ranks, Badges, and Loyalty Rewards Program – myCred | 21 | 1,478 | 3,337 | 10k+ | Non-prefixed global variable | ||
| #36 | Razorpay Quick Payments | 21 | 399 | 63 | 2k+ | Exception output is not escaped | ||
| #37 | Rocket Maintenance Mode & Coming Soon Page | 21 | 1,176 | 1,406 | 4k+ | Non-prefixed global variable | ||
| #38 | Royal Addons for Elementor – Addons and Templates Kit for Elementor | 21 | 13,011 | 2,530 | 600k+ | Text Domain Mismatch | ||
| #39 | SeatReg | 21 | 312 | 1,637 | 400 | Missing nonce verification | ||
| #40 | Trace My IP – Visitor IP Tracker, Stats Analytics & Page Views Counter with Email Alerts | 21 | 871 | 338 | 1k+ | wp function not compatible with requires wp | ||
| #41 | URL Shortify – Simple and Easy URL Shortener | 21 | 1,511 | 2,669 | 10k+ | Non-prefixed global variable | ||
| #42 | Buckaroo Woocommerce Payments Plugin | 21 | 638 | 321 | 2k+ | Exception output is not escaped | ||
| #43 | BuddyPress WooCommerce My Account Integration. Create WooCommerce Member Pages | 21 | 668 | 1,569 | 800 | Non-prefixed global variable | ||
| #44 | Wise Chat | 21 | 470 | 506 | 5k+ | Output is not escaped | ||
| #45 | Paysera Payment Gateway for WooCommerce | 21 | 1,868 | 196 | 7k+ | Exception output is not escaped | ||
| #46 | Pay For Post with WooCommerce | 21 | 958 | 1,477 | 1k+ | Non-prefixed global variable | ||
| #47 | Wordfence Security – Firewall, Malware Scan, and Login Security | 21 | 1,592 | 2,973 | 5m+ | Output is not escaped | ||
| #48 | WP Compress – Instant Performance & Speed Optimization | 21 | 3,367 | 3,253 | 10k+ | Non Singular String Literal Domain | ||
| #49 | 12 Step Meeting List | 22 | 156 | 593 | 900 | Non-prefixed global variable | ||
| #50 | WP Sessions Time Monitoring Full Automatic | 22 | 869 | 1,529 | 500 | Non-prefixed global variable |