我每小时都有一个cron任务,我可以在监视器中看到它正在运行。但是,下面的函数并没有完成它应该做的事情。我正在尝试获取3种不同自定义帖子类型中的任何帖子,它们的meta\\u键为“listing\\u status”,meta\\u值为“active”。然后,我将一些自定义字段数据(一个日期字段,“listing\\u expiration”)与当前日期进行比较,如果设置的日期现在是过去的,则将listing\\u状态更改为“expired”。我不明白为什么没有使帖子过期。。。
//auto-expire active listings every hour (if they are expired)
if ( ! wp_next_scheduled( \'expire_listings\' ) ) {
wp_schedule_event( time(), \'hourly\', \'expire_listings\' );
}
add_action( \'expire_listings\', \'tps_expire_listings\' );
//Checks all current listings (that can expire) to see if they are expired, and if so, mark them as such
function tps_expire_listings(){
$active = array(
\'post_status\' => \'publish\',
\'post_type\'=>array(\'audition\',\'gig\', \'classified\'),
\'meta_key\'=>\'listing_status\',
\'meta_value\'=>\'active\',
\'posts_per_page\'=> -1,
);
$unexpired = get_posts($active);
foreach ($unexpired as $post) {
setup_postdata($post);
if (function_exists(\'get_field\')) {
$expiresOn = strtotime(get_field(\'listing_expiration\', get_the_ID()));//returns a date formatted in m/d/Y, then timestamp
}
$now = strtotime(date(\'m/d/Y\'));
if ($now >= $expiresOn) {
update_post_meta(get_the_ID(), \'listing_status\', \'expired\');
} else {
update_post_meta(get_the_ID(), \'listing_status\', \'active\');
}
}
wp_reset_postdata();
}