{"id":233901,"date":"2025-06-20T10:38:58","date_gmt":"2025-06-20T10:38:58","guid":{"rendered":"https:\/\/pl.wordpress.org\/plugins\/smart-content-expiry\/"},"modified":"2025-11-04T16:14:54","modified_gmt":"2025-11-04T16:14:54","slug":"smart-content-expiry","status":"publish","type":"plugin","link":"https:\/\/kea.wordpress.org\/plugins\/smart-content-expiry\/","author":23284500,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.0","stable_tag":"1.1.0","tested":"6.8.5","requires":"5.0","requires_php":"","requires_plugins":null,"header_name":"Smart Content Expiry","header_author":"MakeYourWeb","header_description":"Schedule content expiration and control what happens after expiry \u2014 hide, replace, redirect or display a custom message.","assets_banners_color":"5082c0","last_updated":"2025-11-04 16:14:54","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/makeyourweb","header_plugin_uri":"","header_author_uri":"https:\/\/plugins.makeyourweb.online\/","rating":5,"author_block_rating":0,"active_installs":10,"downloads":512,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"makeyourwebonline","date":"2025-06-20 10:38:22"},"1.1.0":{"tag":"1.1.0","author":"makeyourwebonline","date":"2025-11-04 16:14:54"}},"upgrade_notice":{"1.1.0":"<p>Added onboarding message and improved user experience.<br \/>\nNo database changes \u2014 safe to update. Includes UX tweaks and small translation updates.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3315161,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3315161,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3315183,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Post editor settings for expiry","2":"Admin listing of content with expiration dates"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[243843,19851,243841,19853,243842],"plugin_category":[],"plugin_contributors":[242079],"plugin_business_model":[],"class_list":["post-233901","plugin","type-plugin","status-publish","hentry","plugin_tags-auto-hide","plugin_tags-content-expiration","plugin_tags-expire-post","plugin_tags-post-expiration","plugin_tags-schedule-removal","plugin_contributors-makeyourwebonline","plugin_committers-makeyourwebonline"],"banners":{"banner":"https:\/\/ps.w.org\/smart-content-expiry\/assets\/banner-772x250.png?rev=3315183","banner_2x":"https:\/\/ps.w.org\/smart-content-expiry\/assets\/banner-1544x500.png?rev=3315161","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smart-content-expiry\/assets\/icon-128x128.png?rev=3315161","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Smart Content Expiry<\/strong> lets you automatically manage content lifecycle in WordPress.<\/p>\n\n<p>You can schedule an expiration date for any post or page and define what should happen when that date is reached:<\/p>\n\n<ul>\n<li>Hide the content entirely<\/li>\n<li>Replace it with a custom message<\/li>\n<li>Redirect the visitor to another page or website<\/li>\n<\/ul>\n\n<p>Ideal for:\n* Time-limited promotions and announcements\n* Expiring offers or seasonal content\n* Redirecting outdated pages to newer content\n* Ensuring stale information disappears automatically<\/p>\n\n<p>Key features:\n* Set an expiration date\/time directly in the post editor\n* Choose between hide \/ replace \/ redirect actions\n* Add a custom expiration message or redirect URL\n* Shortcode support: <code>[smart_expire expires=\"YYYY-MM-DD HH:MM\"]...[\/smart_expire]<\/code>\n* Admin page listing all expiring content (Tools \u2192 Expiring Content)<\/p>\n\n<p>No background processes or cron jobs \u2014 all logic runs when a visitor views a post.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the \"Plugins\" menu<\/li>\n<li>Edit any post or page to set an expiry rule in the sidebar<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20this%20plugin%20delete%20posts%20after%20expiry%3F'><h3>Does this plugin delete posts after expiry?<\/h3><\/dt>\n<dd><p>No. It only hides, replaces, or redirects the content. Your posts remain in the database.<\/p><\/dd>\n<dt id='is%20there%20a%20shortcode%20to%20handle%20inline%20expiration%3F'><h3>Is there a shortcode to handle inline expiration?<\/h3><\/dt>\n<dd><p>Yes! Use <code>[smart_expire expires=\"2025-12-31 23:59\" action=\"replace\" message=\"This content has expired.\"]Hidden content[\/smart_expire]<\/code>.<\/p><\/dd>\n<dt id='can%20i%20bulk-set%20expiry%20for%20multiple%20posts%3F'><h3>Can I bulk-set expiry for multiple posts?<\/h3><\/dt>\n<dd><p>Not yet \u2014 but it\u2019s planned for a future PRO version. Right now, expiry must be set per-post.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added friendly onboarding message when no posts have expiry set.<\/li>\n<li>Improved admin UI readability and user guidance.<\/li>\n<li>Updated translations and text domains.<\/li>\n<li>Added small CSS enhancements for clarity.<\/li>\n<li>Special thanks to Rik0399 for testing the first version! \u2764\ufe0f<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed nonce validation and naming inconsistency<\/li>\n<li>Added <code>wp_unslash()<\/code> before sanitizing user input (complies with WP Coding Standards)<\/li>\n<li>Improved escaping in admin UI and frontend output<\/li>\n<li>Optimized content listing query with <code>meta_key<\/code> and <code>posts_per_page<\/code> limit<\/li>\n<li>Confirmed compatibility with WordPress 6.8<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Improved shortcode behavior with redirects<\/li>\n<li>Minor UI text tweaks and translation support<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Expire posts and pages automatically. Hide, replace or redirect content after expiry \u2014 no cron jobs or deletions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/233901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=233901"}],"author":[{"embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/makeyourwebonline"}],"wp:attachment":[{"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=233901"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=233901"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=233901"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=233901"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=233901"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kea.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=233901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}