A WordPress plugin to expire post with specified date.
You can enter expiration date on edit screen.
This plugin runs cron every minute to search expired posts and make them private
.
NOTICE This plugin requires PHP 5.6 and over.
FAQ
How to avoid post status to be private
Private is the default post status but if you want another case, use filter hook for that.
// Filter status if post type is `product`
add_filter( 'tscp_expired_status', function( $status, $post ) {
if ( 'product' == $post->post_type ) {
$status = 'no-stock';
}
return $status;
}, 10, 2 );
If status is false
, this plugin doesn’t change post status.
In such situation, you might need adding any custom field to post.
Use another action which will occur just after tscp_expired_status
.
// do something just after post status is/isn't changed.
add_action( 'tscp_post_expired', function( $post ) {
// Post is still publish,
// But add some custom fields
update_post_meta( $post->ID, '_not_in_front_page', true );
} );
Change frequency of expiration check
If you are low-resource environment, you might need low frequency.
For example, assume that your site allows posts to be expired within 10 min.
Use hook to delay interval.
add_filter( 'tscp_cron_interval', function() {
// Change interval from 60 sec to 600 sec.
return 600;
} );
ChangeLog
1.2.0
- Bump required PHP version.
- Fix editor UI.
1.1.0
1.0.1
- Fix broken link on edit screen.
- Add unit test for expiration process.
1.0.0