WST Post Expiration Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
WST Post Expiration adds an expiration date and time to your posts. Once that time passes, the post switches from published to draft automatically. It keeps announcements and campaign pages with a fixed run time from staying public after they are over.
The date is set where you already work: the block editor sidebar, the classic editor meta box, or Quick Edit on the post list. An “Expiration” column is added to the post list, so you can see at a glance which posts expire and when.
How it works
- Each post with an expiration date gets its own single WP-Cron event, scheduled for exactly that time
- An hourly fallback picks up posts whose event was lost (after a site copy, damaged cron data, and the like)
- An expiration date that is already in the past is handled on the next cron run
- An expired post becomes a
draft. The target status can be changed with thewst_post_expiration_new_statusfilter - Clearing the field removes the scheduled event
Features
- One expiration date and time per post
- Set it from the block editor sidebar, the classic editor, or Quick Edit
- An “Expiration” column on the post list
- Choose which post types can have an expiration date (posts, pages, and custom post types)
- A “Scheduled events” section on the settings screen shows the posts with an expiration date and the events registered for them, with a “Reschedule” button to repair a mismatch
- Times are evaluated in the site timezone (Settings > General)
- Developer hooks:
wst_post_expiration_new_status(filter),wst_post_expiration_expired(action),wst_post_expiration_settings_capability(filter)
Capabilities
- Setting the expiration date of a post requires permission to edit that post
- Changing the plugin settings requires administrator permissions (
manage_options). Use thewst_post_expiration_settings_capabilityfilter to change this
Before you start
- Expiration relies on WP-Cron. On a low traffic site, cron only runs when someone visits, so the change may be applied a little late. Calling
wp-cron.phpfrom a server-side cron job makes it exact. - Moving a post to draft is a real status change. To bring it back, publish it again. The expiration date stays on the post, so it fires again while that time is in the past. Clear or update the date as well.
- Deactivating the plugin removes every scheduled event. The dates stay on the posts, so activating it again schedules them once more.
Screenshots
The expiration field in the block editor sidebar
The settings screen: enabled post types and scheduled events
The “Expiration” column and the Quick Edit field on the post list
