On This Page
Content Expiration
Overview
Content Expiration adds a deadline to posts and supported types. When the clock passes that moment, automation changes the post status—commonly to draft orprivate—so time-bound offers, event recaps, or job listings do not linger past compliance or marketing policy. Editors set the expiry while composing content; WordPress cron (or system cron hitting wp-cron.php) performs the follow-up work.
This reduces manual “someone stay up until midnight” unpublishing and gives stakeholders confidence that public URLs will stop serving sensitive pricing or expired legal copy on schedule, provided server time and scheduled events remain healthy.

Features
Per-Post Expiry Datetime
Scheduled Processing
Configurable Policy
Timezone Awareness
Audit-Friendly Transitions
How It Works
Enable the Module
Set Global Policy
Edit Time-Sensitive Posts
Publish and Monitor
Post-Expiry Review

Installation & Activation
Install WP PowerSuite
Enable Content Expiration
Document Timezone Rules
Harden Cron on Staging

Use Cases
- TimedPromotionsFlash sales with legal end times.
- EventExpiryConference agendas that must disappear after the venue date.
- DeadlineControlInternship postings with firm close-of-business deadlines.
Frequently Asked Questions
Which status is used after expiry?
Configured in Advanced Settings—validate on staging before launch (draft vs private affects URL and redirect behavior differently).
What if wp-cron is disabled?
You must trigger WordPress scheduled events via system cron or another runner; otherwise deadlines will lag until manual visits fire hooks.
Can I extend or cancel expiry?
Yes—edit the datetime before the deadline passes; overdue items follow your manual recovery process.
Does expiry delete content?
Typically it changes status, not trash. Confirm your version’s behavior before equating expiry with deletion.
Will search engines drop pages immediately?
Crawlers recrawl on their schedule; combine with redirects or noindex patterns if SEO policy requires faster removal signals.
Troubleshooting
- Post stayed public past expiryCheck Site Health cron errors, server clock skew, timezone under Settings, post type support, and plugin conflicts delaying wp_schedule_event.
- Expiry triggered too earlyCompare editor’s local timezone expectations with site timezone; adjust or document training.
- Custom post type ignoredConfirm CPT is public, included in module settings, and editor UI saved meta.
- Multisite blog discrepanciesEach site may have separate timezones—repeat configuration checks per blog.
