{"id":268222,"date":"2026-01-15T14:35:31","date_gmt":"2026-01-15T14:35:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/expire-content-block\/"},"modified":"2026-01-15T14:42:33","modified_gmt":"2026-01-15T14:42:33","slug":"expire-content-block","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/expire-content-block\/","author":15132644,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Expire Content Block","header_author":"zellerpure","header_description":"Automatically hide or replace inner content after a specific date\/time.","assets_banners_color":"ffffff","last_updated":"2026-01-15 14:42:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":0,"downloads":135,"num_ratings":1,"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":"zellerpure","date":"2026-01-15 14:42:33"}},"upgrade_notice":{"1.0.0":"<p>First stable version of Expire Content Block.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3440432,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3440432,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3440432,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3440432,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"ecb\/expire-content":{"apiVersion":3,"name":"ecb\/expire-content","version":"1.0.0","title":"Expire Content","category":"design","icon":"clock","description":"Automatically hide or replace inner content after a specific date\/time.","keywords":["expire","timed","schedule","hide","campaign"],"supports":{"html":false,"anchor":true},"attributes":{"expiryDate":{"type":"string","default":""},"expiryTime":{"type":"string","default":""},"action":{"type":"string","default":"hide"},"replacementText":{"type":"string","default":""}},"usesContext":["postId","postType"],"editorScript":"ecb-expire-content-editor-script","style":"ecb-expire-content-style","editorStyle":"ecb-expire-content-editor-style","textdomain":"expire-content-block","example":{"attributes":{"expiryDate":"2025-12-31","expiryTime":"23:59","action":"replace","replacementText":"This offer has expired."},"innerBlocks":[{"name":"core\/paragraph","attributes":{"content":"Limited-time holiday promotion."}}]}}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"<strong>The Expire Content block wrapper in the editor<\/strong>","2":"<strong>Inspector panel: date &amp; time picker + actions<\/strong>","3":"<strong>Preview of expired content inside editor (overlay mode)<\/strong>","4":"<strong>Frontend replacement message shown after expiration<\/strong>"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1220,9501,148076,4062,143667],"plugin_category":[40],"plugin_contributors":[254066],"plugin_business_model":[],"class_list":["post-268222","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-expire","plugin_tags-gutenberg","plugin_tags-schedule","plugin_tags-timed-content","plugin_category-calendar-and-events","plugin_contributors-zellerpure","plugin_committers-zellerpure"],"banners":{"banner":"https:\/\/ps.w.org\/expire-content-block\/assets\/banner-772x250.png?rev=3440432","banner_2x":"https:\/\/ps.w.org\/expire-content-block\/assets\/banner-1544x500.png?rev=3440432","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/expire-content-block\/assets\/icon.svg?rev=3440432","icon":"https:\/\/ps.w.org\/expire-content-block\/assets\/icon.svg?rev=3440432","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Expire Content Block<\/strong> is a simple but powerful Gutenberg block that lets you schedule content expiration \u2014 without shortcodes, without coding, and with live visual previews while editing.<\/p>\n\n<p>Place any blocks inside it (images, text, buttons, forms, anything), set an expiry date and time\u2026\nAfter that moment, the content will <strong>automatically be hidden<\/strong> or <strong>replaced with a custom message<\/strong>.<\/p>\n\n<p>Perfect for:\n- Limited-time promotions\n- Event registration closing\n- Temporary announcements\n- Holiday notices\n- Launch campaigns\n- Membership or course content phases<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li>100% native Gutenberg block (no shortcode mess)<\/li>\n<li>Add any blocks inside using InnerBlocks<\/li>\n<li>Choose expiry date &amp; time via DateTimePicker<\/li>\n<li>Define behavior:\n\n<ul>\n<li><strong>Hide content after expiry<\/strong><\/li>\n<li><strong>Replace content with a custom message<\/strong><\/li>\n<\/ul><\/li>\n<li>Editor preview mode shows how expired content will appear<\/li>\n<li>Server-side rendering for accurate scheduling<\/li>\n<li>Lightweight and fast \u2014 zero frontend JS required<\/li>\n<li>Safe content sanitization with <code>wp_kses_post()<\/code><\/li>\n<\/ul>\n\n<h3>Why this plugin?<\/h3>\n\n<p>Most \u201ctimed content\u201d plugins rely on shortcodes or old TinyMCE dialogs.\nExpire Content Block brings the experience to <strong>modern block editor standards<\/strong>, with intuitive UI and visual feedback.<\/p>\n\n<h3>Future PRO Features (coming soon)<\/h3>\n\n<ul>\n<li>Show content <em>between<\/em> specific dates<\/li>\n<li>Multiple expiration rules per block<\/li>\n<li>WooCommerce-based expiration triggers<\/li>\n<li>Geolocation + time-based conditions<\/li>\n<li>Replace with saved block patterns or templates<\/li>\n<li>Analytics: how many times the block was shown before expiry<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/expire-content-block<\/code>, or install via Plugin Upload.<\/li>\n<li>Activate the plugin through the <em>Plugins<\/em> menu in WordPress.<\/li>\n<li>In the Gutenberg editor, search for <strong>Expire Content<\/strong> block.<\/li>\n<li>Add blocks inside it, set expiry date\/time in the inspector panel.<\/li>\n<li>Choose whether to hide or replace the content after expiration.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20block%20work%20with%20any%20theme%3F\"><h3>Does this block work with any theme?<\/h3><\/dt>\n<dd><p>Yes, it uses native Gutenberg APIs and works with any block-enabled theme.<\/p><\/dd>\n<dt id=\"will%20the%20content%20be%20hidden%20exactly%20at%20the%20specified%20time%3F\"><h3>Will the content be hidden exactly at the specified time?<\/h3><\/dt>\n<dd><p>Yes. The expiration is processed on the server using WordPress timezone and server-side rendering.<\/p><\/dd>\n<dt id=\"can%20i%20nest%20any%20type%20of%20block%20inside%20it%3F\"><h3>Can I nest any type of block inside it?<\/h3><\/dt>\n<dd><p>Yes. Text, images, buttons, videos, forms \u2014 anything Gutenberg supports.<\/p><\/dd>\n<dt id=\"does%20it%20use%20javascript%20on%20the%20frontend%3F\"><h3>Does it use JavaScript on the frontend?<\/h3><\/dt>\n<dd><p>No. The expiration logic is fully server-side for accuracy and performance.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20no%20expiry%20date%20is%20set%3F\"><h3>What happens if no expiry date is set?<\/h3><\/dt>\n<dd><p>The content will behave normally and remain visible.<\/p><\/dd>\n<dt id=\"is%20a%20pro%20version%20planned%3F\"><h3>Is a PRO version planned?<\/h3><\/dt>\n<dd><p>Yes \u2014 with time ranges, WooCommerce triggers, geolocation rules, templates, analytics and more.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with:\n\n<ul>\n<li>Expiry date &amp; time selection<\/li>\n<li>Hide or replace content after expiry<\/li>\n<li>Editor preview and badges<\/li>\n<li>Server-side rendering<\/li>\n<\/ul><\/li>\n<\/ul>","raw_excerpt":"Block that hides or replaces content after a set date\/time. Perfect for promotions, events, and temporary announcements.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/268222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=268222"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zellerpure"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=268222"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=268222"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=268222"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=268222"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=268222"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=268222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}