在没有插件的情况下创建cron作业?

时间:2011-03-31 作者:Javier Villanueva

基本上,我编写了一个函数,可以根据Posteta表中的字段将post状态更改为draft:

/**
 * Remove ads if they have been sold for over 5 days
 */
function cp_remove_sold_ads(){

    global $wpdb;
    // Get all sold ads
    $sold_ads = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "postmeta WHERE `meta_key` = \'cp_ad_sold_date\' AND `meta_value` <> \'\'");

    foreach ($sold_ads as $ad) {
        $today = time();

        // Get day, month, year
        $date = explode(\'-\',get_post_meta($ad->post_id, \'cp_ad_sold_date\', true));

        $sold_date = mktime(null, null, null, $date[1], $date[2], $date[0]);
        $date_diff = $today - $sold_date;

        // Get the days difference
        $sold_day_diff = floor($date_diff / (60*60*24));

        if ($sold_day_diff >= 5) {
            wp_update_post(array(\'ID\' => $ad->post_id, \'post_status\' => \'draft\'));
        }
    }
}
这很好,如果我将该函数添加到init操作中,它会执行它应该执行的操作:

add_action( \'init\' , \'cp_remove_sold_ads\' );
然而,我想让这个操作每天都执行,我四处看看,发现WP使用WP\\U schedule\\u事件来处理hanlde cron作业,但我不知道如何使用它,有人知道我需要添加什么来处理它吗?

提前谢谢!

1 个回复
最合适的回答,由SO网友:Roman 整理而成

请看WordPress Codex中的示例:

  1. wp_schedule_event
  2. wp_schedule_single_event

结束

相关推荐

比较WP查询_POSTS元_查询中的日期的正确方法是什么

我在WP模板中有一个query\\u posts调用。通过使用More Fields插件,我可以让站点管理员创建一个事件(自定义帖子类型),然后输入格式为YYYY/mm/dd的日期。主要问题是;我应该向meta\\u查询数组中的value选项传递什么值?我目前正试图通过“日期(“Y/m/d h:I A”)”(减去引号),因为据我所知,这将在今天打印当前日期。我不在乎约会的时间,所以这可能无关紧要。Ulitimatly我正在尝试使用compare选项来确定即将发生的事件,以及在这个网站上不同地方过去发生的事