missing_direct_file_access_protection
Missing direct file access protection
A PHP file in the plugin can be loaded directly instead of through WordPress.
Why It Shows Up
Plugin Check found a PHP file without an early guard such as an ABSPATH check. Without that guard, a browser or script can request the file by path.
Why It Matters
Direct access can run code outside the normal WordPress bootstrap, expose output, or trigger assumptions about loaded functions, permissions, and request context.
How to Fix
- Add a guard near the top of PHP files that are not intended to be requested directly.
- Use `if ( ! defined( 'ABSPATH' ) ) { exit; }` before the file performs work or sends output.
- Keep template partials and bootstrap files protected too, not only the main plugin file.
Notes
- Files that are deliberately public endpoints should route through WordPress APIs or explicitly validate the request before doing work.
References
Affected Plugins
| Rank | Plugin | Score | Errors | Warnings | Installs | Added | Updated | Top Issue |
|---|---|---|---|---|---|---|---|---|
| #301 | WPSSO Core – Complete Schema Markup and Meta Tags | 22 | 1,407 | 412 | 5k+ | Missing Translators Comment | ||
| #302 | WUPO Group Attributes for WooCommerce | 22 | 592 | 1,391 | 400 | Non-prefixed global variable | ||
| #303 | YaySMTP – WP Mail SMTP with Email Logs, Tracking & Reports | 22 | 654 | 435 | 10k+ | Exception output is not escaped | ||
| #304 | YITH WooCommerce Ajax Search | 22 | 408 | 1,659 | 30k+ | Non-prefixed global variable | ||
| #305 | ЮKassa для WooCommerce | 22 | 590 | 168 | 9k+ | Short PHP open tag found | ||
| #306 | Recipe Cards For Your Food Blog from Zip Recipes | 22 | 1,126 | 1,731 | 1k+ | Non-prefixed global variable | ||
| #307 | Print Labels with Barcodes. Create price tags, product labels, order labels for WooCommerce | 23 | 1,185 | 1,027 | 1k+ | Text Domain Mismatch | ||
| #308 | Gutenberg Blocks – ACF Blocks Suite | 23 | 1,097 | 1,449 | 400 | Non-prefixed global variable | ||
| #309 | Advanced Custom Fields: Extended | 23 | 1,885 | 329 | 100k+ | Text Domain Mismatch | ||
| #310 | Frontend Admin by DynamiApps | 23 | 5,938 | 3,208 | 9k+ | Text Domain Mismatch | ||
| #311 | Custom WooCommerce Checkout Fields Editor | 23 | 755 | 1,386 | 2k+ | Non-prefixed global variable | ||
| #312 | Admin and Site Enhancements (ASE) | 23 | 137 | 330 | 200k+ | Nonce verification recommended | ||
| #313 | Advanced Menu Manager Pro – Built for Content-heavy WordPress Sites to Add, Filter, Lock, and Edit Menus Easily | 23 | 545 | 1,397 | 400 | Non-prefixed global variable | ||
| #314 | Advanced Ads – Ad Manager & AdSense | 23 | 559 | 719 | 100k+ | Non-prefixed global variable | ||
| #315 | Advanced Custom Fields (ACF®) | 23 | 2,456 | 1,218 | 2m+ | Text Domain Mismatch | ||
| #316 | Advanced Form Integration — Connect Forms to 200+ Apps | 23 | 5,783 | 4,687 | 10k+ | wp function not compatible with requires wp | ||
| #317 | Advanced Product Labels for WooCommerce | 23 | 921 | 559 | 20k+ | Text Domain Mismatch | ||
| #318 | AI Engine – The Chatbot, AI Framework & MCP for WordPress | 23 | 408 | 539 | 100k+ | error log error log | ||
| #319 | Affiliate Super Assistent | 23 | 1,280 | 267 | 1k+ | Text Domain Mismatch | ||
| #320 | Fullscreen Menu | 23 | 537 | 1,287 | 2k+ | Non-prefixed global variable | ||
| #321 | AR for WordPress | 23 | 151 | 499 | 400 | Non-prefixed global variable | ||
| #322 | Autocomplete Address and Location Picker for WooCommerce | 23 | 630 | 1,299 | 2k+ | Non-prefixed global variable | ||
| #323 | Autoptimize | 23 | 288 | 191 | 800k+ | Output is not escaped | ||
| #324 | Shortcodes and extra features for Phlox theme | 23 | 412 | 424 | 90k+ | Output is not escaped | ||
| #325 | BA Book Everything | 23 | 1,184 | 1,086 | 10k+ | Output is not escaped | ||
| #326 | Beds24 Online Booking | 23 | 532 | 374 | 2k+ | wp function not compatible with requires wp | ||
| #327 | Kadence Security – Password, Two Factor Authentication, and Brute Force Protection | 23 | 1,053 | 967 | 700k+ | Missing Translators Comment | ||
| #328 | BlossomThemes Email Newsletter | 23 | 337 | 239 | 20k+ | Output is not escaped | ||
| #329 | Booking calendar, Appointment Booking System | 23 | 1,079 | 1,125 | 3k+ | Output is not escaped | ||
| #330 | BSK PDF Manager | 23 | 1,576 | 625 | 7k+ | Text Domain Mismatch | ||
| #331 | BuddyDrive | 23 | 722 | 1,597 | 1k+ | Non-prefixed global variable | ||
| #332 | BuddyPress | 23 | 584 | 9,012 | 100k+ | Non-prefixed function | ||
| #333 | Builderall for WordPress | 23 | 4,782 | 1,308 | 1k+ | Text Domain Mismatch | ||
| #334 | Announcement & Notification Banner – Bulletin | 23 | 930 | 1,576 | 2k+ | Non-prefixed global variable | ||
| #335 | Burger Companion | 23 | 3,274 | 472 | 10k+ | Text Domain Mismatch | ||
| #336 | Business Directory Plugin – Easy Listing Directories for WordPress | 23 | 611 | 1,063 | 10k+ | Non-prefixed global variable | ||
| #337 | Cart Notices for WooCommerce | 23 | 639 | 474 | 2k+ | Text Domain Mismatch | ||
| #338 | Products Suggestions for WooCommerce | 23 | 707 | 505 | 700 | Output is not escaped | ||
| #339 | Grid & Styler For Contact Form 7 And Divi | 23 | 548 | 1,341 | 500 | Non-prefixed global variable | ||
| #340 | All In One Login — Login Page Security and Customization for WordPress with Google reCAPTCHA, Social Login, Temporary Login, 2FA, and more. | 23 | 750 | 1,359 | 60k+ | Non-prefixed global variable | ||
| #341 | Classified Listing – AI-Powered Classified ads & Business Directory | 23 | 155 | 2,074 | 9k+ | Non-prefixed global variable | ||
| #342 | CLUEVO LMS, E-Learning Platform | 23 | 1,843 | 1,176 | 400 | Text Domain Mismatch | ||
| #343 | Content Aware Sidebars – Fastest Widget Area Plugin | 23 | 993 | 1,738 | 30k+ | Non-prefixed global variable | ||
| #344 | Content Egg – Affiliate Product Importer & Price Comparison | 23 | 1,245 | 1,275 | 10k+ | Non-prefixed global variable | ||
| #345 | Contest Gallery – Upload & Vote Photos, Media, Sell with PayPal & Stripe | 23 | 9,315 | 26,644 | 1k+ | Non-prefixed global variable | ||
| #346 | Free Theme Builder for Elementor – CRT Addons (Header, Footer, Archive, WooCommerce & 50+ Widgets) | 23 | 791 | 2,331 | 400 | Non-prefixed global variable | ||
| #347 | Currency Exchange for WooCommerce | 23 | 692 | 505 | 500 | Output is not escaped | ||
| #348 | CWW Companion | 23 | 307 | 223 | 1k+ | Output is not escaped | ||
| #349 | Auto Post Cleaner | 23 | 715 | 1,378 | 1k+ | Non-prefixed global variable | ||
| #350 | Disable Bloat for WordPress & WooCommerce | 23 | 863 | 1,325 | 10k+ | Non-prefixed global variable |