Description
StalePilot lets you set an expiry date on any post type and automatically take action when that date arrives.
Whether you manage time-sensitive promotions, seasonal content, legal notices with review deadlines, or news articles that lose relevance, StalePilot gives you the tools to handle content lifecycle directly within WordPress.
Key benefits:
- Automatically move expired content to draft, private, or trash – no manual cleanup needed.
- Get notified by email before and after content expires, so nothing slips through the cracks.
- Show visitors countdown timers and timed content blocks that respond to expiry dates.
- Manage expiring content at scale with bulk edit, quick edit, and a dashboard widget.
StalePilot works with posts, pages, and custom post types. It integrates with both the Block Editor (Gutenberg) and the Classic Editor.
Features
- Expiry Date and Action – Set an expiry date and time on any supported post type, and choose what happens: Move to Draft, Make Private, or Move to Trash.
- Block Editor Integration – Sidebar panel in Gutenberg for configuring expiry date, time, and action.
- Classic Editor Integration – Metabox in the sidebar for configuring expiry on sites using the Classic Editor.
- Posts List Column – Sortable expiry column in admin list tables showing scheduled or past expiry dates.
- Expired Posts Filter – Dedicated “Expired” view in the posts list with a count of expired posts.
- Quick Edit and Bulk Edit – Edit expiry settings inline or for multiple posts at once.
- Dashboard Widget – “Expiring Soon” widget showing posts approaching their expiry date within a configurable time window.
- Email Notifications – Get notified when content expires, with optional pre-expiry warnings (1, 3, or 7 days before).
- Configurable Recipients – Send notifications to specific user roles or individual users.
- Expiry Countdown Block – Display a live countdown timer or static date on the front end, with customizable colors and thresholds. Also available as a
[stalepilot_countdown]shortcode. - Timed Content Block – Show or hide content based on a date, relative time from publish, or the post’s expiry date. Also available as a
[stalepilot_timed_content]shortcode. - Automatic Scheduling – Expiry is automatically cancelled on trash/delete and rescheduled on restore.
- Developer Hooks – Extensible via actions and filters for custom integrations.
Blocks
This plugin provides 2 blocks.
- Countdown Display a countdown timer or static date for the content expiry.
- Timed Content Show or hide inner blocks based on a date/time condition.
Installation
- Upload the
stalepilotdirectory to/wp-content/plugins/, or install it directly through the WordPress plugin screen. - Activate the plugin through the “Plugins” screen in WordPress.
- Go to Settings > StalePilot to choose which post types support expiry and configure default actions and notifications.
- Edit any post or page and use the “StalePilot” panel in the sidebar to set an expiry date and action.
FAQ
-
Which post types are supported?
-
By default, StalePilot is enabled for posts and pages. You can enable it for any public custom post type in the plugin settings under Settings > StalePilot.
-
What happens when a post expires?
-
The plugin performs the action you selected for that post: it moves the post to draft, makes it private, or moves it to trash. You can set a default action in the settings and override it per post.
-
Can I display a countdown timer on the front end?
-
Yes. The plugin includes an Expiry Countdown block (and a
[stalepilot_countdown]shortcode) that displays either a live countdown timer or a static formatted date. You can customize colors, threshold warnings, and the expired message. -
What happens if I restore a trashed post that had an expiry date?
-
If the expiry date is still in the future, the plugin automatically reschedules the expiry. If the expiry date has already passed, the stale expiry metadata is cleaned up.
-
Where can I find the unminified source code?
-
All source ships with the plugin: the plugin’s own JavaScript is in
src/, and the bundled@teydeastudio/componentsand@teydeastudio/utilslibraries are indeps/js/components/src/anddeps/js/utils/src/. To rebuild, install Node.js 20 and runnpm install && npm run buildin the plugin directory.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“StalePilot – Content Expiry & Scheduled Post Actions” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “StalePilot – Content Expiry & Scheduled Post Actions” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.2 (2026-04-27)
- An FAQ entry added to readme.txt, explaining where the unminified source code lives in the plugin and how to rebuild it from source
1.0.1 (2026-04-24)
- The “Pre-expiry warning” and “Dashboard widget window” settings now accept any number of days within a reasonable range, with quick-set presets for common values
- Direct loading of wp-includes/version.php in the WordPress version detection fallback removed
1.0.0 (2026-04-07)
- Initial release.