如果您将特惠活动设置为自定义帖子类型,则可以将“计划”日期设置为您希望其过期的日期,然后在更改计划日期后使用此代码按计划自动发布。“future\\u show”行与我的“show”自定义帖子类型一致,因此如果你有“deal”自定义帖子类型,它会显示“future\\u deal”。
<?php
function sfn_setup_future_hook() {
// Replace native future_post function with replacement
remove_action(\'future_show\',\'_future_post_hook\');
add_action(\'future_show\',\'publish_future_post_now\');
}
function publish_future_post_now($id) {
wp_publish_post($id);
}
add_action(\'init\', \'sfn_setup_future_hook\');
?>
然后,您可以使用下面的代码在服务器上设置帖子,如果它比今天的帖子旧,则将其过期。它与WordPress挂钩
cron 因此,您并不是一直在运行它,但您会注意到有一行注释掉了,它在init上运行,因此您可以测试它。对于测试,请注释掉前3行并使用init操作。但不要在生产中这样做。
<?php
// setting posts with current date or older to draft
if (!wp_next_scheduled(\'sfn_expire_hook\')){
wp_schedule_event( time(), \'hourly\', \'sfn_expire_hook\');
}
add_action( \'sfn_expire_hook\', \'sfn_show_expire\');
function sfn_show_expire(){
global $wpdb;
$server_time = date(\'mdy\');
$result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = \'show\' AND post_status = \'publish\'");
if( !empty($result)) foreach ($result as $a){
$show_time = get_the_time(\'mdy\', $a->ID);
if ( $server_time > $show_time ){
$my_post = array();
$my_post[\'ID\'] = $a->ID;
$my_post[\'post_status\'] = \'draft\';
wp_update_post( $my_post );
}
} // end foreach
}
// add_action( \'init\', \'sfn_show_expire\' );
?>
不要忘记将我的函数前缀(sfn)更改为您自己的,只是为了将它的函数与其他任何函数进行沙箱化。
Edit 我还认为可以将SQL查询更改为获取“deal”类别中的帖子,其工作方式也是一样的。创建一个完整的帖子类型,然后将其包含在网站/博客中,这可能比需要做的工作更多。