=== Content Time Lock ===
Contributors: wpmakedev
Tags: drip content, content schedule, timed content, restrict by date, course drip
Requires at least: 5.5
Tested up to: 6.9
Stable tag: 1.1.1
Requires PHP: 7.4
License: GPLv2
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Lock WordPress posts until a scheduled date. Automatically drip course lessons week by week for logged-in students — no membership plugin needed.

== Description ==

Students who can access your entire course on day one will binge it. By week three they are stuck, overwhelmed, or gone — and asking for refunds. You built the course as a week-by-week journey, but your delivery system does not enforce that pace.

Content Time Lock fixes this without a $179-per-year membership plugin. You set an unlock date on any post or page. Until that date, students see a message you write instead of the content. When the date arrives, the content unlocks automatically — no manual steps, no developer help required.

**What you can do with it:**

* **Lock any post, page, or custom post type until a date and time you pick.** Set the unlock date right inside the post editor, one field, one click. Works with standard posts, pages, and any custom post type.
* **Show students a live countdown timer.** While the content is locked, students see a ticking timer — "Unlocks in 3 days, 4 hours, 12 minutes." Three display styles to choose from: simple text, flip-card, or circular. When the countdown hits zero, the page tells them the content just unlocked and prompts a refresh.
* **Restrict by user role.** Choose whether to lock content for all logged-in users, specific roles only, or guest visitors. Administrators always see everything regardless of lock settings.
* **Write your own locked-state message.** Replace the default placeholder text with whatever you want students to see — HTML supported. Set a global default and override it per post when you need different messages for different lessons.
* **Add a call-to-action button on the locked screen.** Point students somewhere useful while they wait — a prerequisite lesson, a community forum, or a welcome page. Custom label and URL, toggled per post.

**What this plugin does not do:** Content Time Lock has no payment processing, no email opt-in gates, and no membership tiers — it locks and unlocks content by date and user role, nothing else.

== Installation ==

1. Upload the `content-time-lock` folder to `/wp-content/plugins/` or install through **Plugins → Add New**.
2. Activate the plugin.
3. Go to **Tools → Content Time Lock** to set your global defaults — lock message, countdown style, and custom CSS class.
4. Open any post or page, find the **Time Lock** metabox, check **Enable Time Lock**, choose who to restrict, set your unlock date and time, and save.
5. That is it. The content is now hidden until the date you set.

== Frequently Asked Questions ==

= Do my students need an account? =

Yes, for most setups. The plugin restricts content by user role — so to keep lessons away from everyone except paying students, those students need a WordPress user account with the right role. You can create accounts manually, let students register themselves, or connect any plugin that assigns roles on signup or purchase (WooCommerce + User Role Editor, for example). Guest lockout is also available if you want to block unregistered visitors entirely.

= Will this work with my theme? =

Almost certainly yes. The plugin hooks into `the_content` filter — the standard WordPress mechanism that every well-built theme uses to output post content. It also has specific compatibility handling for Elementor, Beaver Builder, and SiteOrigin Page Builder. If you hit an issue with a particular theme or builder, open a support thread with the theme name and we will take a look.

= Can I drip content based on when someone registers? =

Not currently. Unlock dates are fixed calendar dates — one date applies to all users. If Lesson 2 should unlock on March 10th for your entire cohort, this plugin handles that cleanly. If you need Lesson 2 to unlock exactly seven days after each individual student signs up, you need a plugin that tracks per-user enrollment dates (LearnDash or LifterLMS, for example). Relative unlock dates based on registration are on our feature roadmap.

= Does this work with WooCommerce? =

Yes, indirectly. Content Time Lock does not connect to WooCommerce orders or subscriptions directly — it does not know when someone purchased. What it does do is restrict content by WordPress user role. If you use WooCommerce with a role-assigning plugin (like WooCommerce Memberships or the free User Role Editor), customers who buy get a specific role, and you can lock your lessons to that role with a fixed unlock schedule. WooCommerce decides who has access; this plugin decides when they get it.

== Screenshots ==

1. The Time Lock metabox inside the post editor — set an unlock date, pick a role restriction, and optionally override the global message.
2. The locked content placeholder as a student sees it, with the countdown timer running.
3. The three countdown timer styles: text, flip-card, and circular.
4. The global settings page under Tools → Content Time Lock.
5. The All Time Locks admin list — every locked post with its unlock date and current locked or unlocked status.

== Changelog ==

= 1.1.1 – 21/04/2024  =
* Fix   - Metabox design.

= 1.1.0 – 21/04/2024  =
* Lock any post, page, or custom post type until a specific date and time.
* Role-based restrictions: lock content for all logged-in users, specific roles, or guests.
* Live countdown timer in three display styles: text, flip-card, and circular SVG.
* Per-post settings override global defaults for lock message, countdown visibility, timer style, and CTA button.
* Call-to-action button with custom label and URL on the locked-content screen.
* Administrators always bypass all locks.
* Page builder compatibility for Elementor, Beaver Builder, and SiteOrigin.
* Global settings page under Content Time Lock admin menu.
* All Time Locks admin list with status badges and unlock-date sorting.

= 1.0.0 - 07/14/2025 =
* Initial release.
