CRON任务触发,但函数不工作

时间:2016-08-15 作者:Eckstein

我每小时都有一个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();
}

1 个回复
SO网友:Eckstein

我想出来了。。。

我需要使用$post->ID 而不是get_the_ID().