{"id":335461,"date":"2026-07-06T06:09:10","date_gmt":"2026-07-06T06:09:10","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/content-expiration-manager\/"},"modified":"2026-07-06T06:09:01","modified_gmt":"2026-07-06T06:09:01","slug":"contwiz-content-expiration-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/contwiz-content-expiration-manager\/","author":23526914,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"ContWiz Content Expiration Manager","header_author":"Vishal Singh","header_description":"Keep content fresh by setting expiry dates, automating actions, and sending reminders.","assets_banners_color":"abb7c4","last_updated":"2026-07-06 06:09:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/contwiz-content-expiration-manager\/","header_author_uri":"https:\/\/profiles.wordpress.org\/singhvishal05\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":23,"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":"singhvishal05","date":"2026-07-06 06:09:01"}},"upgrade_notice":{"1.0.0":"<ul>\n<li>Initial release<\/li>\n<li>expiry date &amp; time<\/li>\n<li>Draft\/Trash\/Notify actions<\/li>\n<li>Quick Edit<\/li>\n<li>Bulk Edit<\/li>\n<li>Gutenberg sidebar<\/li>\n<li>Classic Editor meta box<\/li>\n<li>Expiry status column<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3597313,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3597313,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3597313,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3597313,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3597313,"resolution":"1","location":"assets","locale":"","width":1846,"height":965},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3597313,"resolution":"2","location":"assets","locale":"","width":1859,"height":931},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3597313,"resolution":"3","location":"assets","locale":"","width":391,"height":531},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3597313,"resolution":"4","location":"assets","locale":"","width":1859,"height":927},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3597313,"resolution":"5","location":"assets","locale":"","width":1853,"height":966},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3597313,"resolution":"6","location":"assets","locale":"","width":1853,"height":966}},"screenshots":{"1":"Dashboard tab \u2014 expiry stats, expiring-soon list, and content coverage overview","2":"Expiry status column on the Posts list screen with sortable badges","3":"Classic Editor meta box \u2014 set expiry date, action, and Clear Expiry button","4":"General settings tab \u2014 default action and cron frequency","5":"Notifications settings tab \u2014 email alerts, SMTP status, and test email button","6":"How It Works tab \u2014 brief content expiration plugin guide"}},"plugin_section":[262246],"plugin_tags":[19851,19855,19853,270288,20954],"plugin_category":[],"plugin_contributors":[270289],"plugin_business_model":[],"class_list":["post-335461","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-content-expiration","plugin_tags-expire-posts","plugin_tags-post-expiration","plugin_tags-posts-scheduling","plugin_tags-scheduled-content","plugin_contributors-singhvishal05","plugin_committers-singhvishal05"],"banners":{"banner":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/banner-772x250.png?rev=3597313","banner_2x":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/banner-1544x500.png?rev=3597313","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/icon-128x128.png?rev=3597313","icon_2x":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/icon-256x256.png?rev=3597313","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-1.png?rev=3597313","caption":"Dashboard tab \u2014 expiry stats, expiring-soon list, and content coverage overview"},{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-2.png?rev=3597313","caption":"Expiry status column on the Posts list screen with sortable badges"},{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-3.png?rev=3597313","caption":"Classic Editor meta box \u2014 set expiry date, action, and Clear Expiry button"},{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-4.png?rev=3597313","caption":"General settings tab \u2014 default action and cron frequency"},{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-5.png?rev=3597313","caption":"Notifications settings tab \u2014 email alerts, SMTP status, and test email button"},{"src":"https:\/\/ps.w.org\/contwiz-content-expiration-manager\/assets\/screenshot-6.png?rev=3597313","caption":"How It Works tab \u2014 brief content expiration plugin guide"}],"raw_content":"<!--section=description-->\n<p><strong>ContWiz Content Expiration Manager<\/strong> enables you to automatically expire WordPress posts and pages on a schedule. Set an expiry date and time on any post or page, choose what happens when it expires, and let the plugin handle the rest \u2014 no manual cleanup needed.<\/p>\n\n<p>Whether you manage a news site, a promotional landing page, a job board, or a blog, outdated content hurts your credibility and SEO. ContWiz Content Expiration Manager keeps your WordPress site fresh and accurate, automatically.<\/p>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Edit any post or page and set an expiry date and time.<\/li>\n<li>Choose an expiry action: Move to Draft, Move to Trash, or Keep Published with a notification.<\/li>\n<li>The plugin automatically processes expired content on your configured schedule.<\/li>\n<li>You receive email reminders before content expires so you can review or update it.<\/li>\n<\/ol>\n\n<h4>Key Features<\/h4>\n\n<p><strong>Flexible Content Expiration<\/strong><\/p>\n\n<ul>\n<li>Set a precise expiry date and time on any post or page<\/li>\n<li>Choose what happens on expiration: Move to Draft, Move to Trash, or Notify Only<\/li>\n<li>\"Expire Now\" button for immediate manual content expiration<\/li>\n<li>Block Editor (Gutenberg) sidebar panel for seamless post expiration management<\/li>\n<li>Classic Editor meta box \u2014 works with the Classic Editor plugin<\/li>\n<\/ul>\n\n<p><strong>Automated Expiry Processing<\/strong><\/p>\n\n<ul>\n<li>WordPress Cron-powered automatic expiration \u2014 runs hourly, twice daily, or daily<\/li>\n<li>Processes all expired posts and pages without manual intervention<\/li>\n<li>Configurable processing frequency from the Settings page<\/li>\n<\/ul>\n\n<p><strong>Content Management &amp; Visibility<\/strong><\/p>\n\n<ul>\n<li>Expiry status column on the Posts and Pages list screens \u2014 see every post's expiration status at a glance<\/li>\n<li>Status badges: Never Expires, Expiring Soon (within 7 days), Expired<\/li>\n<li>Sortable expiry column \u2014 quickly find the posts expiring soonest<\/li>\n<li>Quick Edit support \u2014 update expiry dates without opening each post<\/li>\n<li>Bulk Edit support \u2014 set or update expiry dates on multiple posts at once<\/li>\n<\/ul>\n\n<p><strong>Dashboard Overview<\/strong><\/p>\n\n<ul>\n<li>WordPress Dashboard widget showing:\n\n<ul>\n<li>Posts and pages expiring today<\/li>\n<li>Posts and pages expiring this week<\/li>\n<li>Total already-expired content count<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>News &amp; Media<\/strong> \u2014 automatically remove or draft time-sensitive articles and breaking news<\/li>\n<li><strong>Marketing &amp; Promotions<\/strong> \u2014 expire sale pages, coupon posts, and limited-time offers automatically<\/li>\n<li><strong>Job Boards &amp; Events<\/strong> \u2014 auto-remove job listings and event pages after the deadline<\/li>\n<li><strong>Legal &amp; Compliance<\/strong> \u2014 ensure outdated policy pages, terms, or regulatory content doesn't remain published<\/li>\n<li><strong>Blogs &amp; Editorial<\/strong> \u2014 keep your content library fresh and accurate with scheduled content reviews<\/li>\n<li><strong>Agencies<\/strong> \u2014 manage content expiration across client websites efficiently<\/li>\n<\/ul>\n\n<h4>Works With<\/h4>\n\n<ul>\n<li>Block Editor (Gutenberg) \u2713<\/li>\n<li>Classic Editor plugin \u2713<\/li>\n<li>WP Mail SMTP \u2713<\/li>\n<li>FluentSMTP \u2713<\/li>\n<li>Easy WP SMTP \u2713<\/li>\n<li>Post SMTP \u2713<\/li>\n<li>All major WordPress themes \u2713<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p><strong>From the WordPress Plugin Directory (recommended)<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin.<\/li>\n<li>Search for <strong>ContWiz Content Expiration Manager<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>Content Expiry<\/strong> in the left-hand menu to configure settings.<\/li>\n<li>Edit any post or page and set an expiry date in the Content Expiry panel.<\/li>\n<\/ol>\n\n<p><strong>Manual Installation<\/strong><\/p>\n\n<ol>\n<li>Download the plugin zip file.<\/li>\n<li>Upload the <code>contwiz-content-expiration-manager<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Content Expiry \u2192 Settings<\/strong> to configure.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20set%20an%20expiry%20date%20on%20a%20post%20or%20page%3F\"><h3>How do I set an expiry date on a post or page?<\/h3><\/dt>\n<dd><p>Open any post or page for editing. In the Block Editor, find the <strong>Content Expiry<\/strong> panel in the right-hand sidebar. In the Classic Editor, find the <strong>Content Expiry<\/strong> meta box below the Publish panel. Set a date and time, choose an expiry action, and save the post.<\/p><\/dd>\n<dt id=\"what%20expiry%20actions%20are%20available%3F\"><h3>What expiry actions are available?<\/h3><\/dt>\n<dd><p>Three actions are available in the free plan:<\/p>\n\n<ul>\n<li><strong>Move to Draft<\/strong> \u2014 unpublishes the post; it remains in WordPress but is no longer visible to visitors.<\/li>\n<li><strong>Move to Trash<\/strong> \u2014 moves the post to the Trash; it will be permanently deleted after 30 days unless restored.<\/li>\n<li><strong>Keep Published (Notify Only)<\/strong> \u2014 the post stays live and you receive an email so you can review it manually.<\/li>\n<\/ul><\/dd>\n<dt id=\"will%20my%20content%20expire%20at%20the%20exact%20time%20i%20set%3F\"><h3>Will my content expire at the exact time I set?<\/h3><\/dt>\n<dd><p>Content expiration is processed by WordPress Cron (WP-Cron), which runs when your site receives a visitor. On sites with regular traffic, expiration is accurate to within one hour. For sites with very low traffic or for time-critical content, configure a real server cron job to call <code>wp-cron.php<\/code> on your desired schedule.<\/p><\/dd>\n<dt id=\"can%20i%20automatically%20expire%20posts%20in%20bulk%3F\"><h3>Can I automatically expire posts in bulk?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Posts \u2192 All Posts<\/strong> (or Pages), check multiple posts, select <strong>Edit<\/strong> from the Bulk Actions dropdown, and set a shared expiry date and action. All selected posts will be updated at once.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20email%20reminders%20before%20content%20expires%3F\"><h3>Does the plugin send email reminders before content expires?<\/h3><\/dt>\n<dd><p>Yes. You will receive a daily digest email listing all posts and pages expiring within the next 7 days. A separate instant notification is sent when content actually expires and an action is applied. Both can be toggled on or off from the Notifications settings tab.<\/p><\/dd>\n<dt id=\"what%20timezone%20does%20the%20plugin%20use%20for%20expiration%3F\"><h3>What timezone does the plugin use for expiration?<\/h3><\/dt>\n<dd><p>The plugin uses your site's configured timezone, set under <strong>Settings \u2192 General<\/strong> in WordPress. All expiry dates and times you enter are interpreted in that timezone.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20classic%20editor%20plugin%3F\"><h3>Does it work with the Classic Editor plugin?<\/h3><\/dt>\n<dd><p>Yes. When the Classic Editor plugin is active, expiry settings are managed through a dedicated meta box in the post editing sidebar.<\/p><\/dd>\n<dt id=\"does%20this%20work%20on%20custom%20post%20types%3F\"><h3>Does this work on Custom Post Types?<\/h3><\/dt>\n<dd><p>The free plan supports Posts and Pages. Custom post type support is available in the upcoming Pro plan.<\/p><\/dd>\n<dt id=\"can%20i%20undo%20an%20expiry%20action%3F\"><h3>Can I undo an expiry action?<\/h3><\/dt>\n<dd><p>Yes. If a post was moved to Draft, change its status back to Published from the post list or editor. If it was moved to Trash, restore it from the Trash screen within 30 days before it is permanently deleted.<\/p><\/dd>\n<dt id=\"will%20a%20post%20expire%20again%20if%20i%20republish%20it%20after%20expiration%3F\"><h3>Will a post expire again if I republish it after expiration?<\/h3><\/dt>\n<dd><p>No. Once a post has been processed, an \"expired\" flag is set. Republishing the post will not re-trigger the expiry. To schedule a new expiration, open the post, set a new expiry date \u2014 this automatically clears the expired flag.<\/p><\/dd>\n<dt id=\"my%20emails%20are%20not%20being%20delivered.%20what%20should%20i%20do%3F\"><h3>My emails are not being delivered. What should I do?<\/h3><\/dt>\n<dd><p>WordPress uses PHP mail() by default, which many web hosts block or send to spam. Install a free SMTP plugin such as <strong>WP Mail SMTP<\/strong> or <strong>FluentSMTP<\/strong> to route emails through a proper mail service. The plugin's Notifications tab shows your current SMTP status and includes a <strong>Send Test Email<\/strong> button to verify delivery.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20page%20builders%20like%20elementor%20or%20divi%3F\"><h3>Is the plugin compatible with page builders like Elementor or Divi?<\/h3><\/dt>\n<dd><p>The free plan works with any theme or page builder since expiry is managed through post meta, not the page content itself. Native page builder integrations (for expiring individual sections or modules) are planned for the Pro version.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>expiry date &amp; time<\/li>\n<li>Draft\/Trash\/Notify actions<\/li>\n<li>Quick Edit<\/li>\n<li>Bulk Edit<\/li>\n<li>Gutenberg sidebar<\/li>\n<li>Classic Editor meta box<\/li>\n<li>Expiry status column<\/li>\n<\/ul>","raw_excerpt":"Automatically expire WordPress posts and pages by date. Schedule content expiration, auto-draft or trash outdated content, and get email reminders.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/335461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=335461"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/singhvishal05"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=335461"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=335461"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=335461"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=335461"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=335461"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=335461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}