Creotec Content Expiration Manager

Creotec Content Expiration Manager

Details
View on WordPress

Creotec Content Expiration Manager adds simple content lifecycle management to WordPress:

  • Add an expiration date/time to posts, pages, and public custom post types.
  • Choose what happens when content expires:
    • Change status to Draft
    • Make Private/Password Protect (unpublish)
    • Redirect to another URL (301 or 302)
    • Replace content with a custom “expired” message
    • Display an “Expired” banner at the top of the post
    • Move content to the bin/trash
  • Optional pre-expiration reminder email to the site admin address.
  • Reliable processing:
    • Runs on WP-Cron every 10 minutes
    • Includes a lightweight fallback check on normal WordPress requests (throttled)
  • Admin overview page:
    • Expiring Soon (next 30 days)
    • Already Expired
    • Bulk actions (extend date, disable expiration)
  • Reusable templates for redirect, banner, and replacement-content actions.
  • Per-post-type enabling/disabling under Settings > Post Expiration.
  • List-table indicator icons show which posts have expiration enabled.

No external services, no analytics, no licensing system.

Usage

  1. Edit any supported post type.
  2. In the “Expiration” box:
    • Check “Enable expiration”.
    • Set an “Expiration date & time” (site timezone).
    • Optionally choose a reminder email (1/3/7 days before).
    • Choose what happens when it expires.
  3. Update/publish the post.

To manage expirations site-wide:
* Go to WP Admin > Expirations
* Use tabs:
* Expiring Soon (next 30 days)
* Already Expired
* Use bulk actions:
* Extend by 7 days
* Extend by 30 days
* Disable expiration

To choose which post types support expiration:
* Go to Settings > Expirations.

To create reusable expiration templates:
* Go to Settings > Expirations.
* Create templates for redirects, banners, or replacement content.
* When editing a post, choose a template in the relevant expiration action. Template edits are reflected anywhere that template is selected.

Restore original content (Replace action)

When the action is “Replace content with a message”, the plugin saves the original content when the expiration is processed.
After that, a “Restore original content” button appears in the Expiration meta box, allowing you to restore the saved content and disable expiration for that item.

Expiration processing & reliability

This plugin does not rely solely on WP-Cron.

  • Primary: WP-Cron runs every 10 minutes to process reminders and expirations.
  • Fallback: A lightweight check runs on WordPress requests (throttled via transient) to ensure expirations still trigger even if cron is delayed.

Notes about caching:
* Some full-page caches may serve pages without executing PHP. In those cases, expirations will still process when WordPress runs (admin requests, REST requests, cron, etc.).
* On expiration, the plugin triggers an action hook so caching plugins/site code can purge caches:
do_action( ‘creocem_post_expired’, $post_id, $action );

Hooks

  • creocem_post_expired – Fires after a post is processed as expired.
    • Parameters: (int) $post_id, (string) $action

License

This plugin is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This plugin is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

Credits

Developed and maintained by Michael Gbadebo @ Creotec Limited.

Details

Plugin code:
creotec-content-expiration-manager
Plugin version:
1.0.0
Outdated:
No
WP version:
6.0 or higher
PHP version:
8.0 or higher
Test up to WP version:
7.0
Total installations:
0
Last updated:
2026-06-03
Rating:
Times rated:
0
expiration
expire-posts
redirect
scheduled-content
unpublish