Post Expiration Date


This is a lightweight plugin designed to make WordPress posts expire at a set time, on a given date. This was done in the simplest, most expedient manner possible so conflicts should be minimal. Dependencies are minimal as well. WP Cron is not used or required. You can choose from a JQuery datetime picker or the browser’s native option.

How it works: You can set an expiration date (an expiry) for a post by selecting the date and time. This uses local time, not GMT, UTC, etc. When the expiration date and time have been passed the post will be moved from Published to Draft status. Picking a date/time is optional — not all posts require an expiry.


  • /assets/screenshot-1.png


  1. Upload Post Expiration Date to the /wp-content/plugins/ directory
  2. Activate through the ‘Plugins’ menu in WordPress
  3. Review the “Post Expiration” options in WordPress’ Settings tab


What date-time format is the expiration date stored in?

February 2, 2019 1:01 AM will be stored as “2019-02-02T01:01” in your postmeta table.

Why does the date/time formatted like that?

We opted to use the ISO 8601 standard for date and time format. This can be manipulated if you’d like to view it in other ways, as we do in the “Exp. Date” column of the Posts page.

My date-time entry text box is blank! What do I do?

This is because your browser does not support input type=”datetime-local”. If this happens to you please use the settings to change to the “Universal” picker or use Chrome for your browser. Newer verions of this plugin (v1.2 and above) fix this issue and give you the option for different datetime pickers.


Very useful, but…

This plugin is in its result absolutely that what I was looking for.

Unfortunately a lot of persons are supposed to use this backend and there is neither mentioned the necessary time format nor the browser with which it will work with better.

Please be so kind and add at the postsettings directly the information about the required time format and, if I am allowed to state a wish, so take as expire time – if not mentioned – 00:00 as default settings.

Thank you in advance!

Great plugin working for CPT

Great, works for CPT, and you can select which CPT will expire (tested with WP 4.9.8)
I only experimented an error when browsing a post just after its expiration date was set in the past (so that it expired).
Uncaught Error: Cannot use object of type WP_Post as array in /wp-content/plugins/wp-post-expires/wp-post-expires.php:287

Just rewrite condition : if($del_post->post_status == ‘trash’){
to : if( $del_post AND ($del_post->post_status == ‘trash’)) { //

Does exactly what it says

This plugin does just what it says. You can make a published post automatically expire after setting an expiration time, but it’ll go to Drafts so you still have the post for your records. Good for when you’re posting about time-sensitive information that won’t be relevant after a while.

expires my posts

Does what is says on the label: expires my posts when their time is up.

Would be nice for pages as well! (hint hint)

Read all 6 reviews

Contributors & Developers

“Post Expiration Date” is open source software. The following people have contributed to this plugin.


Translate “Post Expiration Date” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Added Settings page
  • Option to choose between native and universal input types.
  • Fix bug where datetime could not be removed from database
  • Added clear button for Universal datetime picker


  • Add datetime picker support for all browsers.
  • Cleaned up the


  • Released!