Skip to content
WordPress.org
  • Showcase
  • Plugins
  • Themes
  • Hosting
  • News
    • Learn WordPress
    • Documentation
    • Education
    • Forums
    • Developers
    • Blocks
    • Patterns
    • Photos
    • Openverse ↗︎
    • WordPress.tv ↗︎
    • About WordPress
    • Make WordPress
    • Events
    • Five for the Future
    • Enterprise
    • Gutenberg ↗︎
    • Job Board ↗︎
    • Swag Store ↗︎
  • Get WordPress
Get WordPress
WordPress.org

Plugin Directory

KW Members Fortress

  • Submit a plugin
  • My favorites
  • Log in
  • Submit a plugin
  • My favorites
  • Log in

KW Members Fortress

By KREISWOLKE
Download
  • Details
  • Reviews
  • Installation
  • Development
Support

Description

KW Members Fortress turns a standalone WordPress site into a private, members-only space. Visitors who aren’t logged in can’t reach anything except the login screen and the legal pages you choose to publish — not your pages, posts, archives, search, feeds, REST API, sitemaps, XML-RPC, and crucially not your uploaded files either.

Most “force login” plugins only gate the pages WordPress renders. They leave every file in /wp-content/uploads/ reachable by anyone who has (or guesses) the URL — PDFs, images, documents. KW Members Fortress routes those file requests through WordPress and serves them only to logged-in members, then continuously self-tests that the seal is holding.

What it does

  • Whole-site gate — logged-out requests are redirected to login: pages, posts, archives, search, feeds, REST, sitemaps, XML-RPC.
  • Protected file URLs — direct hits to /wp-content/uploads/… are served only to members (Apache/LiteSpeed handled automatically; nginx shows you the one snippet to paste).
  • Leak self-test (canary) — about once an hour the plugin makes a cookie-less request to one of its own upload URLs and raises a dashboard alarm if a file ever comes back without login. Silent misconfiguration becomes a visible warning.
  • Branded login screen — set a background image, overlay colour/gradient, accent colour, and logo from the settings page. No file editing.
  • Footer & legal pages — up to three footer items, each a built-in page (rendered theme-less and reachable while logged out) or an external link. Perfect for an Imprint / Privacy notice on an otherwise-private site.
  • Hardening (all optional, on by default) — block logged-out admin-ajax, block user-enumeration, no-cache headers on blocked responses, and a progressive login throttle that auto-recovers.

Good to know

  • No accounts, tiers, payments, or third-party services. One site, one membership wall.
  • Runtime files are stored under …/wp-content/uploads/kw-members-fortress/ — never in the plugin folder.
  • The leak self-test only ever contacts your own site’s URL; it is not an external service.

Installation

  1. Upload the plugin to /wp-content/plugins/ (or install it from your dashboard) and activate it.
  2. On Apache / LiteSpeed the upload-protection rule is written for you. On nginx, the plugin shows a short location snippet — paste it into your server block and reload nginx.
  3. Visit Members Fortress in the admin menu to brand the login screen, add footer/legal pages, and review the Lockdown status (server type, public-asset folder, and the latest leak self-test result).
  4. Log out in a separate browser to confirm the site is sealed.

Caching: because every visitor must be checked individually, full-page caching of the front end must be turned off (or the gate can be bypassed by a cached copy). The plugin sends no-cache headers on blocked responses, but a page cache in front of WordPress should not store logged-in/front-end pages.

FAQ

Does it really protect uploaded files, or just pages?

Files too — that’s the point. Requests to /wp-content/uploads/… are routed through WordPress and served only to logged-in members. The only exception is a small public sub-folder, uploads/kw-members-fortress/public/, which holds just your chosen login background and logo so they can load on the logged-out login screen.

Why does it edit my root `.htaccess`?

On Apache/LiteSpeed the upload-protection rule is added to .htaccess using WordPress’ own marker API (the same mechanism core uses for permalinks), inside a clearly-marked block. Deactivating the plugin removes the block and restores normal file serving.

What is the “leak self-test”?

A tiny sentinel file lives in the plugin’s folder inside uploads (uploads/kw-members-fortress/canary.txt — a location that must stay locked). About once an hour, while you’re in the dashboard, the plugin requests that file’s URL without sending your login cookies. If the file comes back, the gate isn’t working and you get a red dashboard warning. It only ever contacts your own site — it is not a third-party service.

I’m on nginx and files are still reachable.

nginx configuration can’t be edited from PHP, so the plugin shows the exact location snippet to add to your server block. Add it and reload nginx; the Lockdown tab and the self-test will confirm the seal.

Can I show an Imprint / Privacy page to logged-out visitors?

Yes. Under Footer & Pages, set a slot to Built-in page, give it a title and content, and it renders on its own theme-less page that’s reachable without login (and noindex). Images embedded inside that content won’t display to logged-out visitors, since uploads stay locked — use text and HTML.

The login throttle locked me out.

After several failed logins from one IP, a short, growing cool-down is applied; it expires on its own (no permanent lockout). Note that visitors sharing one office/NAT IP share the counter. You can turn the throttle off on the Lockdown tab.

What happens when I deactivate or delete it?

Deactivating removes the .htaccess rule and turns protection off — by design. Deleting honours the Advanced → “remove all data” option: leave it off to keep your settings, or turn it on to remove the settings and the public-asset folder on uninstall.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“KW Members Fortress” is open source software. The following people have contributed to this plugin.

Contributors
  • KREISWOLKE

Translate “KW Members Fortress” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.8

  • The legal-page styles are now delivered through the enqueue API (registered handle + wp_add_inline_style).
  • All runtime files now live under uploads/kw-members-fortress/: the leak-test sentinel moved there from the uploads root, and public login assets moved into the public/ sub-folder. Existing installs migrate automatically.
  • The sentinel file is now written via the WP_Filesystem API.

1.0.7

  • Initial public release.

Meta

  • Version 1.0.8
  • Last updated 15 hours ago
  • Active installations Fewer than 10
  • WordPress version 6.0 or higher
  • Tested up to 7.0.2
  • PHP version 7.4 or higher
  • Tags
    file protectionforce loginlogin requiredmembers-onlyprivate site
  • Advanced View

Ratings

No reviews have been submitted yet.

Your review

See all reviews

Contributors

  • KREISWOLKE

Support

Got something to say? Need help?

View support forum

  • About
  • News
  • Hosting
  • Privacy
  • Showcase
  • Themes
  • Plugins
  • Patterns
  • Learn
  • Documentation
  • Developers
  • WordPress.tv ↗
  • Get Involved
  • Events
  • Donate ↗
  • Five for the Future
  • WordPress.com ↗
  • Matt ↗
  • bbPress ↗
  • BuddyPress ↗
WordPress.org
WordPress.org
  • Visit our X (formerly Twitter) account
  • Visit our Bluesky account
  • Visit our Mastodon account
  • Visit our Threads account
  • Visit our Facebook page
  • Visit our Instagram account
  • Visit our LinkedIn account
  • Visit our TikTok account
  • Visit our YouTube channel
  • Visit our Tumblr account
Code is Poetry
The WordPress® trademark is the intellectual property of the WordPress Foundation.