missing_direct_file_access_protection

Missing direct file access protection

A PHP file in the plugin can be loaded directly instead of through WordPress.

medium weight

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.

Affected Plugins

RankPluginScoreErrorsWarningsInstallsAddedUpdatedTop Issue
#651Simple Calendar – Google Calendar Plugin242,05359250k+Missing direct file access protection
#652Easy Google Maps241,76438920k+Non Singular String Literal Domain
#653Grid/List View for WooCommerce241,1165462k+Output is not escaped
#654GS Behance Portfolio – Display Projects, Gallery & Slider248551,617400Non-prefixed global variable
#655Hide Shipping Method For WooCommerce249461,44710k+Non-prefixed global variable
#656HT Mega Addons for Elementor – Elementor Widgets & Template Builder2412,3521,47470k+Text Domain Mismatch
#657Hummingbird Performance – Cache & Page Speed Optimization for Core Web Vitals | Critical CSS | Minify CSS | Defer CSS Javascript | CDN243,41086670k+Text Domain Mismatch
#658Import from YML2497306400Non-prefixed global variable
#659Import and export users and customers241,04035770k+Unsafe printing function
#660Infinite Uploads – Offload Media and Video to Cloud Storage24586722800Direct Query
#661Keap Official Opt-in Forms248291,0461k+Non-prefixed global variable
#662Social Slider Feed – Social Media Feed & Gallery Widgets2492970720k+Non-prefixed global variable
#663InstaWP Connect – 1-click WP Staging & Migration2425381140k+Non-prefixed global variable
#664Dynamics 365 Integration24383166600Output is not escaped
#665Joli Table Of Contents246531,7557k+Non-prefixed global variable
#666Kenta Blocks – Responsive Blocks and block templates library245641,4052k+Non-prefixed global variable
#667KiviCare – Clinic & Patient Management System (EHR)242238802k+Direct Query
#668Koko Analytics – Privacy-Friendly WordPress Analytics2416639560k+Short PHP open tag found
#669Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress241,855953100k+Output is not escaped
#670LearnPress – Backup & Migration Tool243854695k+Output is not escaped
#671LifterLMS – WP LMS for eLearning, Online Courses, & Quizzes244141,17610k+Non-prefixed global variable
#672Load More Products for WooCommerce2473145920k+Text Domain Mismatch
#673Local Delivery Drivers for WooCommerce241,8321,483900Non-prefixed global variable
#674Event Booking Manager for WooCommerce – Registration, RSVP, Calendar & Tickets249692,1407k+Non-prefixed global variable
#675Generate Images (AI) – Magic Post Thumbnail241,9401,7616k+Non-prefixed global variable
#676Mail Mint – Email Marketing, Newsletter, Email Automation & WooCommerce Emails244,6961,4805k+Text Domain Mismatch
#677Mailchimp for WooCommerce24523663200k+Non-prefixed global variable
#678MailerPress – Newsletter, email marketing & AI automation248053,9311k+Direct Query
#679Mailjet Email Marketing2443520610k+Unsafe printing function
#680Mang Board WP241,2134,7209k+Non-prefixed global variable
#681Admin Tweaks241,507206900Text Domain Mismatch
#682Marketing Automation24440677600Non-prefixed global variable
#683Mass Pages/Posts Creator247361,3641k+Non-prefixed global variable
#684Media Library Folders2488980710k+Text Domain Mismatch
#685Min and Max Quantity for WooCommerce2460345920k+Text Domain Mismatch
#686Receive customer payments on Woocommerce245491,4191k+Non-prefixed global variable
#687Timetable and Event Schedule by MotoPress2445623230k+Output is not escaped
#688MT Addons for Elementor243,0731,4422k+Text Domain Mismatch
#689Musician's Pack for Elementor – Music Website Widgets & Templates241,725228400Text Domain Mismatch
#690Music Player for Elementor – Audio Player & Podcast Player246081,30210k+Non-prefixed global variable
#691MxChat – AI Chatbot & Content Generation for WordPress243,2301,4052k+Text Domain Mismatch
#692My Agile Privacy® – CMP, Cookie Consent & Privacy Tools241,1706747k+Text Domain Mismatch
#693New User Approve246521,41520k+Non-prefixed global variable
#694Newsletter – Send awesome emails from WordPress248982,219200k+Non-prefixed global variable
#695Newsletter Subscription Form – User Subscriptions Form, Capture Email243858291k+Non-prefixed global variable
#696Ninja Forms – The Contact Form Builder That Grows With You247491,533600k+Nonce verification recommended
#697NotificationX – FOMO, Live Sales Notification, WooCommerce Sales Popup, GDPR, Social Proof, Announcement Banner & Floating Notification Bar2426740440k+Non-prefixed hook name
#698Omnipress24169245800Non-prefixed global variable
#699Opt-Out for Google Analytics (DSGVO / GDPR)242901,9783k+Non-prefixed global variable
#700Overlay Image Divi Module245761,3012k+Non-prefixed global variable