Wardgate - Login Shield & Security Hardening — Hide the WordPress login, stop password guessing and tidy up information leaks, with four independent recovery paths.
Wardgate moves your WordPress login to a private address, answers visitors who poke at wp-login.php or wp-admin with a plain 404, locks out addresses that keep guessing passwords and switches off a handful of well known information leaks. A searchable audit log shows who logged in, who failed and what was blocked.
Changing a login URL is risky, so Wardgate is built around safe recovery. It tests the new address before it saves it, asks you to confirm that you stored the link, never edits .htaccess or wp-config.php, and gives you four independent ways back in: the private address, an emergency recovery link, a one-line constant in wp-config.php and simply renaming the plugin folder.
What you get
- Private login address with your own slug. Reserved words and slugs used by real pages are refused
- Logged-out visitors get a 404 (or a redirect to the home page or to a URL you choose) on wp-login.php, wp-admin and wp-register.php
- Pre-flight check: the new address is requested from your own server before it is saved, and you confirm that you stored it
- Four recovery paths: private address, emergency link (one-hour cookie), WARDGATE_DISABLE in wp-config.php, rename the plugin folder. Deactivating restores the stock login instantly
- Brute-force protection with your own limits: attempts, time window and lock duration. Allowlist for IPv4/IPv6 addresses and CIDR ranges
- Neutral login errors that never reveal whether a username exists, plus a list of active lock-outs you can release in one click
- Optional e-mail alert when an address is locked out
- Hardening switches: hide the WordPress version, strip version query strings, turn off XML-RPC, block username discovery (REST users and ?author=), disable the theme and plugin file editor
- Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy and optional HSTS and Cross-Origin-Opener-Policy
- Audit log in its own table: logins, failures, lock-outs, blocked requests, recovery use and settings changes, with filter, pagination and CSV export
- Privacy friendly: IP anonymisation, automatic retention (default 30 days), CSV exports neutralise spreadsheet formulas
- Overview dashboard with a hardening score, 24-hour counters, 7-day chart and checklist
How it works
Enabling the private login. Login URL tab: choose a slug (letters, numbers and hyphens), switch the feature on and confirm that you saved the address. Slugs must be 4 to 40 characters. Wardgate refuses slugs that are reserved by WordPress or already used by a page, post or term.
What visitors see. Logged-out visitors who open /wp-login.php, /wp-admin or /wp-register.php get your theme's 404 page (or a redirect). The built-in WordPress shortcuts /login, /admin and /dashboard are stopped from forwarding visitors to the real login. admin-ajax.php, admin-post.php, the REST API and wp-cron keep working.
If you are locked out. 1) Open the private address. 2) Open https://your-site/wp-login.php?wardgate_recover=YOUR_KEY for a one-hour recovery cookie. 3) Add define( 'WARDGATE_DISABLE', true ); above "That's all, stop editing!" in wp-config.php. 4) Rename wp-content/plugins/wardgate-login-shield, or run wp plugin deactivate wardgate-login-shield.
Brute-force limits. Protection tab: after the chosen number of failures inside the time window an address is locked for the chosen duration, even if the correct password is then used. Allowlisted addresses are never locked. Active locks appear on the Overview with a Release button.
Reverse proxies. If your site is behind a trusted proxy or CDN switch on "Trust proxy headers" so the visitor address is read from the forwarded header. Leave it off otherwise, because the header can be forged.
Audit log. Audit log tab: filter by event, page through entries, export CSV or clear the log. IP addresses are anonymised by default and entries are removed after the retention period by a daily scheduled job.
Not included (so there are no surprises)
- Two-factor authentication, CAPTCHA and social login.
- A web application firewall, malware scanner or IP geo-blocking.
- WordPress multisite networks are not officially supported in 1.0.
- Hiding the login from people who already know the private address. It is obscurity plus rate limiting, not a replacement for strong passwords and updates.
Install in minutes
- In your WordPress admin open Plugins > Add New > Upload Plugin and choose the downloaded zip (wardgate-login-shield-v1.0.0.zip), then Install Now and Activate.
- Open Wardgate in the admin menu. Everything is switched on except the private login address, so activating the plugin changes nothing about how you log in yet.
- On the Recovery tab copy the emergency link and keep it somewhere safe (a password manager is ideal).
- On the Login URL tab pick your private slug, tick the confirmation box and save. Wardgate tests the address first, only saves it when it works and e-mails the address and recovery link to the site administrator.
- Bookmark the new login address. Review the Protection and Hardening tabs and adjust the limits to your needs.
What is in the download
- The ready-to-upload WordPress plugin (
wardgate-login-shield), organised in namespaced PHP classes
readme.txt in WordPress.org format, a full HTML documentation page in docs/ and a CHANGELOG.md
license.txt (GNU GPL v2) and a translation template in languages/
- A clean uninstall: removing the plugin from the Plugins screen deletes its data unless you choose to keep it
About the screenshots
The gallery shows the plugin running on a private test site ("Fieldnotes") with sample posts and sample statistics, not a public demo. There is no hosted live demo for this plugin.
Third-party product and network names mentioned are trademarks of their respective owners. This plugin is an independent product and is not affiliated with or endorsed by them.