=== Easeora Content Access ===
Contributors: rifathasanbd
Tags: content restriction, private content, login, access control, members only
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.4.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Restrict selected pages and posts to logged-in users with a lightweight central manager, custom login message, and search-safe protection.

== Description ==

Easeora Content Access provides focused access control for WordPress websites that need selected pages or posts to be available only to logged-in users.

It adds a simple checkbox to each page and post editor, plus a central management screen for applying or removing restrictions in bulk. Logged-out visitors see a configurable message and can be returned to the requested page after signing in.

= Core features =

* Restrict individual pages and posts with one checkbox.
* Manage restrictions centrally with search, filters, pagination, bulk controls, and alphabetical ordering.
* Customise the restriction title and message with the WordPress editor.
* Display an optional WordPress login form.
* Return users to the requested page after login.
* Exclude restricted content from public search, archives, feeds, comments, REST collections, and supported XML sitemaps.
* Add search-engine privacy directives to restricted URLs for logged-out visitors.
* Use native WordPress post metadata without custom database tables.
* Run without frontend JavaScript, external API calls, cron jobs, or bundled third-party libraries.
* Import page and post restrictions from the older Page Restrict plugin when its data is available.
* Choose whether the plugin appears as a main dashboard menu or under **Settings > Easeora Content Access**.

= Default visitor message =

`You are required to login to view this page.`

The login link uses the standard WordPress login screen and returns the user to the original page after successful authentication.

= Supported placeholders =

* `%login_url%` - the login URL for the requested page.
* `%login%` - a complete clickable login link.
* `%title%` - the original page or post title.

= Privacy =

Easeora Content Access does not contact external services, set tracking cookies, collect analytics, or transmit personal data. WordPress handles authentication and the optional login form.

== Installation ==

1. Upload the `easeora-content-access` folder to `/wp-content/plugins/`, or install the plugin through **Plugins > Add New**.
2. Activate **Easeora Content Access**.
3. Edit a page or post and select **Restrict this content to logged-in users**.
4. For bulk management, open **Easeora Content Access > Restricted Content**.
5. Configure the visitor message under **Easeora Content Access > General Options**.
6. Clear any page, server, or CDN cache after changing restrictions.

== Frequently Asked Questions ==

= Who can view restricted content? =

Any authenticated WordPress user can view content marked as restricted. Logged-out visitors receive the configured restriction message.

= Can I restrict several pages at once? =

Yes. Open **Easeora Content Access > Restricted Content**, select the required pages or posts, and save the visible restrictions.

= Can I customise the login message? =

Yes. The restriction title, rich-text message, and optional login form can be configured under **Easeora Content Access > General Options**.

= Does the plugin redirect users back after login? =

Yes. Login links and the optional login form can return visitors to the restricted page they originally requested.

= Does this plugin create custom database tables? =

No. Restrictions are stored with native WordPress post metadata and plugin options.

= Does it load JavaScript on the frontend? =

No. Easeora Content Access does not enqueue frontend JavaScript or contact external APIs.

= What happens if I deactivate the plugin? =

The restriction logic stops running, so the content becomes publicly accessible. Existing plugin settings and restriction metadata remain stored unless the plugin is uninstalled.

= Can I import settings from Page Restrict? =

When compatible Page Restrict data is detected, use **Easeora Content Access > Tools > Import old restrictions**. Test the import on a staging website before removing the old plugin.

= Will already indexed pages disappear from search immediately? =

Search engines must recrawl a URL before processing updated directives. Existing search results may remain temporarily. Use the search engine's webmaster tools when urgent removal is required.

== Screenshots ==

1. Central page and post restriction manager.
2. Restriction checkbox in the WordPress editor.
3. General options for the restriction title, message, and login form.
4. Restricted-content message displayed to a logged-out visitor.

== Changelog ==

= 1.4.2 =
* Redesigned the restriction manager pagination with a clear left-aligned WordPress-style layout.
* Shows a five-page navigation window with Previous and Next controls.
* Added a page summary and improved keyboard and screen-reader accessibility.

= 1.4.1 =
* Fixed pagination links displaying vertically on the central restriction manager.
* Added responsive, scoped administration pagination styling.
* Improved pagination markup and accessibility labels.

= 1.4.0 =
* Added the `easeora_menu_location` setting.
* Added a General Options control to place the plugin in the main dashboard menu or under WordPress Settings.
* Added shared navigation so all plugin screens remain accessible in either location.

= 1.3.0 =
* Renamed the plugin to Easeora Content Access with the new easeora-content-access slug and text domain.
* Added migration from previous User Restrict and Boardwalk identifiers.
* Escaped the replacement title returned by the title filter.
* Retained the existing access, search, REST, sitemap, cache, and bulk-management protections.

= 1.2.1 =
* Added translator comments for placeholder strings.
* Removed the discouraged manual translation loader for WordPress.org hosting.
* Documented justified cached post exclusions for Plugin Check.

= 1.2.0 =
* Prepared the plugin metadata and readme for WordPress.org submission.
* Added current compatibility information for WordPress 7.0.
* Added clearer installation, privacy, FAQ, and usage documentation.
* Updated the public author name.
* Retained the existing security, migration, performance, REST, search, feed, and sitemap protections.

= 1.1.1 =
* Renamed the plugin folder, main file, classes, hooks, options, metadata keys, CSS identifiers, and text domain to Easeora Content Access naming.
* Added a one-time migration for settings and restrictions stored under the previous internal identifiers.

= 1.0.6 =
* Added configurable restriction title, rich-text message, optional login form, placeholders, and alphabetical content ordering.

= 1.0.5 =
* Removed metadata query parameters from the restriction-index rebuild and used normal paginated WordPress queries.

= 1.0.4 =
* Removed direct database queries and strengthened direct-file-access protection.

= 1.0.3 =
* Restored WordPress default object-cache priming in the administration manager.

= 1.0.2 =
* Added uninstall cleanup, licensing, translation loading, accessible labels, request validation, and a cached restriction index.

= 1.0.1 =
* Added search-engine privacy headers, generic restricted titles, and supported SEO schema filtering.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.4.2 =
Improves the restriction manager pagination with five visible page numbers, clear Previous and Next controls, and left-aligned responsive styling.

= 1.4.1 =
Fixes the central restriction manager pagination layout and keeps the controls responsive in WordPress admin.

= 1.4.0 =
Adds configurable WordPress admin menu placement without changing existing restrictions or visitor settings.
