Создать задание cron без плагина?


В основном я написал функцию, которая позволяет мне изменять статус публикации на черновик в зависимости от поля в таблице postmeta:

/**
 * 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'));
        }
    }
}

Это работает нормально, и если я добавлю функцию в действие инициализации, она сделает то, что должна:

add_action( 'init' , 'cp_remove_sold_ads' );

Однако я бы хотел, чтобы это действие выполнялось ежедневно, вместо этого я осмотрелся и обнаружил, что WP использует wp_schedule_event для выполнения заданий cron, но я понятия не имею, как его использовать, кто-нибудь знает, что мне нужно добавить в справишься с этим?

Заранее спасибо!

Author: Javier Villanueva, 2011-03-31

1 answers

Просто посмотрите на примеры в Кодексе WordPress для:

  1. событие wp_schedule_event
  2. wp_schedule_сингле_евент
 3
Author: Roman, 2011-03-31 19:28:29