=== Post Expiration DL ===
Contributors: devlemon
Tags: post expiration, expire posts, scheduled expiration, content expiration, post scheduler
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Schedule WordPress content to expire automatically, change status, or move to trash at a specific date and time.

== Description ==

**Post Expiration DL** lets you decide exactly what happens to a post, page, or custom post type when a deadline passes — automatically, without remembering to do it manually.

**Use it for:**
- Promotional pages with a deadline
- Job listings
- Events
- Seasonal offers
- Temporary announcements
- Any content with a known end date

**Expiration actions:**
- Move to Draft
- Move to Private
- Move to Trash
- Mark as Expired (stays published, receives an internal flag)
- Move to Pending Review

**Key features:**
- Meta box in the post editor (Gutenberg and Classic Editor)
- WP-Cron based scheduling with hourly fallback
- Dashboard with upcoming expirations
- Expiration column in post lists (sortable)
- History log of processed expirations
- Per-item Quick Edit support
- Bulk "Cancel Expiration" action
- Dashboard widget
- Custom Post Type support — enable only the post types you need
- Three languages: English, Portuguese (Brazil), Spanish

**No permanent deletions:** the plugin never permanently deletes content. Trash is the most destructive option available.

**Privacy:** no data is sent to external servers. Everything runs locally in your WordPress installation.

**Timezone:** all dates and times follow the timezone configured in WordPress Settings → General.

**WP-Cron dependency:** expiration timing depends on WP-Cron, which fires when your site receives traffic. For more precise timing, configure a real server cron to trigger WordPress cron independently.

== Installation ==

1. Upload the `post-expiration-dl` folder to `/wp-content/plugins/`.
2. Activate the plugin.
3. Go to **Post Expiration DL → Settings** and select the post types you want to support.
4. Edit any post and use the "Post Expiration DL" sidebar panel to set an expiration.

== Frequently Asked Questions ==

= Does the plugin permanently delete content? =
No. The most destructive available action is "Move to Trash", which can be restored by the administrator.

= Does it send data to external services? =
No. All processing happens locally.

= How accurate is the expiration timing? =
It depends on WP-Cron, which fires on site visits. For precise timing, configure a real server cron job.

= Does it work with custom post types? =
Yes. Enable the desired post types in Settings.

= What timezone are dates and times in? =
The WordPress site timezone configured in Settings → General.

= Does it work with Gutenberg? =
Yes. The meta box appears in the sidebar of the Block Editor and Classic Editor.

== Screenshots ==

1. Post Expiration DL dashboard with statistics and upcoming expirations.
2. Expiration meta box in the post editor.
3. Expirations list with filters.
4. Expiration history log.
5. Settings page.

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
