=== TR Register Only ===
Contributors: techieresource
Tags: login, members only, restrict, private, registration, access control
Requires at least: 5.6
Tested up to: 6.7
Stable tag: 2.0.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Restrict your WordPress site to registered/logged-in users only. Perfect for private communities, staging sites, and intranet portals.

== Description ==

**TR Register Only** makes your entire WordPress site private. Once enabled, only logged-in users can access any page, post, or custom post type. Everyone else is redirected to the login page (or a custom URL of your choice).

**Key Features:**

* ✅ One-click enable/disable toggle
* 🔒 Role-based access control — set minimum required user role
* ↩️ Redirect to WordPress login page or any custom URL
* 💬 Custom message shown on the login page
* 📋 Whitelist specific pages for public access (e.g. pricing, landing pages)
* 🏠 Optionally whitelist the home/front page
* 📡 Optionally restrict REST API to authenticated users
* 🧹 Clean uninstall — removes all data when deleted

**Perfect for:**

* Private/members-only communities
* Staging and development sites
* Corporate intranets
* Schools and educational platforms
* Subscription-based content sites

== Installation ==

1. Upload the `tr-register-only` folder to `/wp-content/plugins/`
2. Activate the plugin from **Plugins > Installed Plugins**
3. Go to **Settings > TR Register Only** to configure

== Frequently Asked Questions ==

= Will this lock me out of the admin? =
No. The WordPress login page (`wp-login.php`) is always whitelisted automatically, so you can always log in.

= Can I allow some pages to be publicly accessible? =
Yes. In Settings, enter the page IDs you want to keep public under "Whitelisted Page IDs". Separate multiple IDs with commas.

= Does this protect the REST API too? =
Optionally. Enable "Protect REST API" in settings to require authentication on all REST endpoints. Note this may break plugins that rely on unauthenticated API calls.

= How do I find a page's ID? =
Go to Pages > All Pages, hover over a page, and the ID appears in the URL at the bottom of the browser (e.g. `post=42`).

== Screenshots ==

1. Settings page with all configuration options

== Changelog ==

= 2.0.0 =
* Complete rewrite for modern WordPress 6.x compatibility
* Added role-based access control (minimum role setting)
* Added custom URL redirect option
* Added page whitelist feature
* Added home page whitelist option
* Added REST API protection option
* Added custom login message support
* Added clean uninstall (removes options on delete)
* PHP 8.x compatible
* Singleton pattern with proper OOP architecture
* Full input sanitization and escaping

= 1.0 =
* Initial release

== Upgrade Notice ==

= 2.0.0 =
Major update with new features including role-based access, page whitelisting, REST API protection, and custom redirect URLs. Settings are stored fresh — please review your configuration after upgrading.
