{"id":235850,"date":"2025-07-14T15:17:26","date_gmt":"2025-07-14T15:17:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/content-time-lock\/"},"modified":"2026-09-06T14:32:52","modified_gmt":"2026-09-06T14:32:52","slug":"content-time-lock","status":"publish","type":"plugin","link":"https:\/\/ar.wordpress.org\/plugins\/content-time-lock\/","author":23163452,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.1","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"Drip Content & Scheduled Content Unlock \u2013 Content Time Lock","header_author":"WPMake","header_description":"Content Time Lock.","assets_banners_color":"192f61","last_updated":"2026-09-06 14:32:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpmake.com\/wordpress-plugins\/","header_author_uri":"https:\/\/www.wpmake.net\/timed-content-locker\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":869,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wpmakedev","date":"2025-07-14 15:17:00","revision":3327635},"1.1.0":{"tag":"1.1.0","author":"wpmakedev","date":"2026-04-21 16:54:39","revision":3512081},"1.1.1":{"tag":"1.1.1","author":"wpmakedev","date":"2026-04-21 17:09:11","revision":3512093},"1.1.2":{"tag":"1.1.2","author":"wpmakedev","date":"2026-05-19 15:02:24","revision":3537529},"1.2.0":{"tag":"1.2.0","author":"wpmakedev","date":"2026-06-03 15:05:14","revision":3559598},"1.3.0":{"tag":"1.3.0","author":"wpmakedev","date":"2026-09-06 14:32:52","revision":3683524}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3512081,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-512x512.png":{"filename":"icon-512x512.png","revision":3512081,"resolution":"512x512","location":"assets","locale":"","width":512,"height":512}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3512081,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3512081,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.1.2","1.2.0","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3512081,"resolution":"1","location":"assets","locale":"","width":3002,"height":2250},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3512081,"resolution":"2","location":"assets","locale":"","width":3024,"height":1722},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3512081,"resolution":"3","location":"assets","locale":"","width":3024,"height":1722},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3512081,"resolution":"4","location":"assets","locale":"","width":3024,"height":1722},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3512081,"resolution":"5","location":"assets","locale":"","width":1850,"height":644},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3512081,"resolution":"6","location":"assets","locale":"","width":2782,"height":1970},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3512081,"resolution":"7","location":"assets","locale":"","width":2758,"height":2008},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3512081,"resolution":"8","location":"assets","locale":"","width":2784,"height":2140}},"screenshots":{"1":"The Time Lock metabox inside the post editor \u2014 choose a lock mode, set an unlock date or registration offset, 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 Time Locker \u2192 Settings.","5":"The All Time Locks admin list \u2014 every locked post with its unlock date (or registration offset) and current status."}},"plugin_section":[],"plugin_tags":[16114,242017,12724,8102,260730],"plugin_category":[],"plugin_contributors":[234352],"plugin_business_model":[],"class_list":["post-235850","plugin","type-plugin","status-publish","hentry","plugin_tags-content-restriction","plugin_tags-content-scheduling","plugin_tags-countdown-timer","plugin_tags-course","plugin_tags-drip-content","plugin_contributors-wpmakedev","plugin_committers-wpmakedev"],"banners":{"banner":"https:\/\/ps.w.org\/content-time-lock\/assets\/banner-772x250.png?rev=3512081","banner_2x":"https:\/\/ps.w.org\/content-time-lock\/assets\/banner-1544x500.png?rev=3512081","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/content-time-lock\/assets\/icon-256x256.png?rev=3512081","icon_2x":"https:\/\/ps.w.org\/content-time-lock\/assets\/icon-256x256.png?rev=3512081","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-1.png?rev=3512081","caption":"The Time Lock metabox inside the post editor \u2014 choose a lock mode, set an unlock date or registration offset, pick a role restriction, and optionally override the global message."},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-2.png?rev=3512081","caption":"The locked content placeholder as a student sees it, with the countdown timer running."},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-3.png?rev=3512081","caption":"The three countdown timer styles: text, flip-card, and circular."},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-4.png?rev=3512081","caption":"The global settings page under Time Locker \u2192 Settings."},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-5.png?rev=3512081","caption":"The All Time Locks admin list \u2014 every locked post with its unlock date (or registration offset) and current status."},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-6.png?rev=3512081","caption":""},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-7.png?rev=3512081","caption":""},{"src":"https:\/\/ps.w.org\/content-time-lock\/assets\/screenshot-8.png?rev=3512081","caption":""}],"raw_content":"<!--section=description-->\n<p>Students who can access your entire course on day one will binge it. By week three they are stuck, overwhelmed, or gone \u2014 and asking for refunds. You built the course as a week-by-week journey, but your delivery system does not enforce that pace.<\/p>\n\n<p>Content Time Lock lets you drip feed course content without a membership plugin \u2014 and without the $179 per year one costs. Choose between two unlock modes: unlock content by date, so one fixed calendar date applies to everyone, or release content after registration, so every student gets their own personal drip schedule counted from the day they signed up. Until the content unlocks, students see a message you write. When the time arrives, the content unlocks automatically \u2014 no manual steps, no developer help required.<\/p>\n\n<p><strong>What you can do with it:<\/strong><\/p>\n\n<ul>\n<li><strong>Unlock content by date.<\/strong> Schedule content release for any post, page, or custom post type \u2014 set the unlock date and time right inside the post editor, one field, one click. Works with standard posts, pages, and any custom post type.<\/li>\n<li><strong>Drip feed course content from each student's own start date.<\/strong> Instead of a fixed date, release content after registration: set a number of days after signup \u2014 Lesson 2 unlocks 7 days after each student registers, Lesson 3 unlocks 14 days after, and so on. Every student gets their own personal schedule automatically.<\/li>\n<li><strong>Show students a live countdown timer.<\/strong> While the content is locked, students see a ticking timer \u2014 \"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.<\/li>\n<li><strong>Restrict content by user role.<\/strong> Choose whether to lock content for all logged-in users, specific roles only, or guest visitors. Administrators always see everything regardless of lock settings.<\/li>\n<li><strong>Write your own locked-state message.<\/strong> Replace the default placeholder text with whatever you want students to see \u2014 HTML supported. Set a global default and override it per post when you need different messages for different lessons.<\/li>\n<li><strong>Add a call-to-action button on the locked screen.<\/strong> Point students somewhere useful while they wait \u2014 a prerequisite lesson, a community forum, or a welcome page. Custom label and URL, toggled per post.<\/li>\n<\/ul>\n\n<p><strong>What this plugin does not do:<\/strong> Content Time Lock has no payment processing, no email opt-in gates, and no membership tiers \u2014 it locks and unlocks content by date or registration offset and user role, nothing else.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>content-time-lock<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install through <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Time Locker \u2192 Settings<\/strong> to set your global defaults \u2014 lock message, countdown style, and custom CSS class.<\/li>\n<li>Open any post or page, find the <strong>Time Lock Content<\/strong> metabox, check <strong>Enable Time Lock<\/strong>, choose who to restrict, select a lock mode (fixed date or days after registration), fill in the unlock value, and save.<\/li>\n<li>That is it. The content is now hidden until the date or registration offset you set.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20data%20does%20the%20plugin%20collect%3F\"><h3>What data does the plugin collect?<\/h3><\/dt>\n<dd><p>Nothing, unless you opt in. On activation you are asked once whether to share usage data. If you skip that screen, or never answer it, the plugin sends nothing at all and every feature works exactly the same \u2014 none of it is gated on opting in.<\/p>\n\n<p>If you do opt in, the following is shared with WPMake through Freemius:<\/p>\n\n<ul>\n<li>Your WordPress user's first name, last name and email address<\/li>\n<li>Your site's homepage URL and title, WordPress version, PHP version and site language<\/li>\n<li>This plugin's version, the Freemius SDK version, and whether it is active or uninstalled<\/li>\n<li>The names, slugs and versions of your other plugins and themes, and whether each is active<\/li>\n<\/ul>\n\n<p>The last three groups are optional and can be switched off individually on the opt-in screen before you accept. If you deactivate the plugin you are offered a short form asking why \u2014 answering it is optional, and you can close it and deactivate without saying anything.<\/p>\n\n<p>You can withdraw consent at any time by deactivating the plugin. To switch the whole integration off in code, so no opt-in is ever shown:<\/p>\n\n<pre><code>add_filter( 'tcl_enable_freemius', '__return_false' );\n<\/code><\/pre><\/dd>\n<dt id=\"how%20do%20i%20turn%20off%20the%20review%20request%20notice%3F\"><h3>How do I turn off the review request notice?<\/h3><\/dt>\n<dd><p>The notice appears once the plugin has been active for a week, on the Dashboard and the plugin's own settings screen only, and only for administrators who have actually created a lock. \"Don't ask again\" removes it for good, and each administrator answers for themselves. To switch it off in code for everyone \u2014 useful on client sites \u2014 drop this in a plugin or your theme's functions.php:<\/p>\n\n<pre><code>add_filter( 'tcl_show_review_notice', '__return_false' );\n<\/code><\/pre><\/dd>\n<dt id=\"do%20my%20students%20need%20an%20account%3F\"><h3>Do my students need an account?<\/h3><\/dt>\n<dd><p>Yes, for most setups. The plugin restricts content by user role \u2014 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.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20theme%3F\"><h3>Will this work with my theme?<\/h3><\/dt>\n<dd><p>Almost certainly yes. The plugin hooks into <code>the_content<\/code> filter \u2014 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.<\/p><\/dd>\n<dt id=\"can%20i%20drip%20content%20based%20on%20when%20someone%20registers%3F\"><h3>Can I drip content based on when someone registers?<\/h3><\/dt>\n<dd><p>Yes. Set the lock mode to \"Unlock X days after user registers\" and enter the number of days. Each logged-in user's unlock time is calculated from their individual account creation date \u2014 so a student who registers today and one who registered last month each get their own personal schedule. Guest visitors always see the locked state when this mode is active since they have no registration date.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20the%20two%20lock%20modes%3F\"><h3>What is the difference between the two lock modes?<\/h3><\/dt>\n<dd><p><strong>Unlock on specific date<\/strong> \u2014 one fixed calendar date and time applies to all visitors equally. Use this for cohort-based courses where everyone starts together (e.g. a live workshop launching on 1 June).<\/p>\n\n<p><strong>Unlock X days after user registers<\/strong> \u2014 each user gets a personal unlock time calculated as their registration date plus however many days you set. Use this for self-paced courses where students can enrol at any time and still follow the same relative schedule.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%3F\"><h3>Does this work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes, indirectly. Content Time Lock does not connect to WooCommerce orders or subscriptions directly \u2014 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. Use the fixed-date mode for cohort launches or the days-after-registration mode for self-paced access. WooCommerce decides who has access; this plugin decides when they get it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0   - 06\/09\/2026<\/h4>\n\n<ul>\n<li>Feature - Welcome screen after activation, with the two-minute setup path and docs link.<\/li>\n<li>Feature - Optional usage-data sharing, asked once on activation and entirely skippable.<\/li>\n<li>Feature - Settings sidebar with help links, related plugins and a review card.<\/li>\n<li>Fix     - The role selector in the Time Lock panel stayed a plain list because a bundled script failed to load.<\/li>\n<li>Fix     - The Time Lock block was left out of the release package, so it never appeared on installed sites.<\/li>\n<li>Fix     - The All Time Locks screen loaded without its stylesheet and script.<\/li>\n<li>Fix     - Review notice buttons sat misaligned and doubled as the notice's dismiss control.<\/li>\n<li>Fix     - Right-to-left admin styles were out of date with their source stylesheets.<\/li>\n<li>Tweak   - Renamed the plugin so drip and scheduling searches actually find it.<\/li>\n<li>Tweak   - Tested up to WordPress 7.1; no compatibility changes were needed.<\/li>\n<li>Tweak   - Reworked readme tags and description to match how people search.<\/li>\n<li>Tweak   - Added a Docs link beside Settings on the plugin's Plugins screen row.<\/li>\n<li>Tweak   - The panel now warns that \"All Logged In Users\" does not restrict signed-out visitors.<\/li>\n<li>Tweak   - The review request now waits a week and only follows real usage.<\/li>\n<li>Tweak   - Deleting the plugin now clears the review notice's stored state.<\/li>\n<li>Dev     - Rewrote DOCUMENTATION.md for 1.2.0; it still described the 1.1.0 menus, panels and limits.<\/li>\n<\/ul>\n\n<h4>1.2.0   \u2013 03\/06\/2026<\/h4>\n\n<ul>\n<li>Feature - Introduced Time Lock Block.<\/li>\n<li>Feature - Partial restriction for contents.<\/li>\n<li>Feature - Overlay settings for restricted content message.<\/li>\n<li>Fix     - Option visibility mismatch in metabox options toggle.<\/li>\n<li>Fix     - Post or page lock not restricting other sections like Comments, etc.<\/li>\n<li>Fix     - The CTA button on frontend restricted message appearing even if URL and Text both are not provided.<\/li>\n<\/ul>\n\n<h4>1.1.2 \u2013 19\/05\/2026<\/h4>\n\n<ul>\n<li>Feature - Added \"Days after registration\" lock mode as an alternative to the fixed unlock date. Content unlocks individually for each user based on their account creation date plus a configurable number of days.<\/li>\n<li>Feature - New \"Lock Mode\" radio group in the Time Lock metabox lets you switch between \"Unlock on specific date\" (existing) and \"Unlock X days after user registers\" (new).<\/li>\n<\/ul>\n\n<h4>1.1.1 \u2013 21\/04\/2024<\/h4>\n\n<ul>\n<li>Fix   - Metabox design.<\/li>\n<\/ul>\n\n<h4>1.1.0 \u2013 21\/04\/2024<\/h4>\n\n<ul>\n<li>Lock any post, page, or custom post type until a specific date and time.<\/li>\n<li>Role-based restrictions: lock content for all logged-in users, specific roles, or guests.<\/li>\n<li>Live countdown timer in three display styles: text, flip-card, and circular SVG.<\/li>\n<li>Per-post settings override global defaults for lock message, countdown visibility, timer style, and CTA button.<\/li>\n<li>Call-to-action button with custom label and URL on the locked-content screen.<\/li>\n<li>Administrators always bypass all locks.<\/li>\n<li>Page builder compatibility for Elementor, Beaver Builder, and SiteOrigin.<\/li>\n<li>Global settings page under Content Time Lock admin menu.<\/li>\n<li>All Time Locks admin list with status badges and unlock-date sorting.<\/li>\n<\/ul>\n\n<h4>1.0.0 - 07\/14\/2025<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Drip content and schedule content release: unlock content by date or a set number of days after signup, with a live countdown timer.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/235850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=235850"}],"author":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpmakedev"}],"wp:attachment":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=235850"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=235850"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=235850"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=235850"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=235850"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=235850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}