StalePilot – Content Expiry & Scheduled Post Actions

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

  1. Upload the stalepilot directory to /wp-content/plugins/, or install it directly through the WordPress plugin screen.
  2. Activate the plugin through the “Plugins” screen in WordPress.
  3. Go to Settings > StalePilot to choose which post types support expiry and configure default actions and notifications.
  4. 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/components and @teydeastudio/utils libraries are in deps/js/components/src/ and deps/js/utils/src/. To rebuild, install Node.js 20 and run npm install && npm run build in 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.

Contributors

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.