ประการแรกกำหนดตารางเวลางาน cron ที่กำหนดเองของคุณ
add_filter('cron_schedules', array($this, 'cron_schedules'));
public function cron_schedules($schedules){
    $prefix = 'cron_';// Avoid conflict with other crons. Example Reference: cron_30_mins
    $schedule_options = array(
        '30_mins' => array(
            'display' => '30 Minutes',
            'interval' => '1800'
        ),
        '1_hours' => array(
            'display' => 'Hour',
            'interval' => '3600'
        ),
        '2_hours' => array(
            'display' => '2 Hours',
            'interval' => '7200'
        )
    );
    /* Add each custom schedule into the cron job system. */
    foreach($schedule_options as $schedule_key => $schedule){
        $schedules[$prefix.$schedule_key] = array(
            'interval' => $schedule['interval'],
            'display' => __('Every '.$schedule['display'])
        );
     }
     return $schedules;
}
คุณต้องตัดสินใจว่าจะกำหนดเวลาการแข่งขันได้ที่ไหนและเมื่อใด 
นี่เป็นเพียงตัวอย่างโค้ดซึ่งทำให้การเรียกใช้เมธอดคลาสที่กำหนดเอง:
$schedule = $this->schedule_task(array(
    'timestamp' => current_time('timestamp'), // Determine when to schedule the task.
    'recurrence' => 'cron_30_mins',// Pick one of the schedules set earlier.
    'hook' => 'custom_imap_import'// Set the name of your cron task.
));
นี่คือรหัสที่กำหนดกิจกรรมจริง:
private function schedule_task($task){
    /* Must have task information. */
    if(!$task){
        return false;
    }
    /* Set list of required task keys. */
    $required_keys = array(
        'timestamp',
        'recurrence',
        'hook'
    );
    /* Verify the necessary task information exists. */
    $missing_keys = array();
    foreach($required_keys as $key){
        if(!array_key_exists($key, $task)){
            $missing_keys[] = $key;
        }
    }
    /* Check for missing keys. */
    if(!empty($missing_keys)){
        return false;
    }
    /* Task must not already be scheduled. */
    if(wp_next_scheduled($task['hook'])){
        wp_clear_scheduled_hook($task['hook']);
    }
    /* Schedule the task to run. */
    wp_schedule_event($task['timestamp'], $task['recurrence'], $task['hook']);
    return true;
}
ตอนนี้สิ่งที่คุณต้องทำคือการโทรไปที่ชื่อของงาน cron ที่กำหนดเองของคุณ ในตัวอย่างนี้ชื่องาน cron custom_imap_importคือ
add_action('custom_imap_import', array($this, 'do_imap_import'));
public function do_imap_import(){
    // .... Do stuff when cron is fired ....
}
ดังนั้นในตัวอย่าง$this->do_imap_import();นี้เรียกว่าทุกๆ 30 นาที (สมมติว่าคุณมีปริมาณการเข้าชมเว็บไซต์เพียงพอ)
หมายเหตุ
ต้องมีการเยี่ยมชมหน้าเพื่อให้ cron ของคุณยิงในเวลาที่ถูกต้อง
ตัวอย่าง:หากคุณจัดตารางงานเป็นระยะเวลา 30 นาที แต่ไม่มีใครเข้าชมเว็บไซต์ของคุณเป็นเวลา 4 ชั่วโมงงาน cron ของคุณจะไม่ถูกไล่ออกจนกว่าผู้เยี่ยมชมจะมาที่ไซต์ของคุณ 4 ชั่วโมงในภายหลัง หากคุณต้องการใช้งานจริง ๆ ทุก 30 นาทีขอแนะนำให้ตั้งค่างาน cron ที่ถูกต้องผ่านผู้ให้บริการเว็บโฮสติ้งของคุณเพื่อเยี่ยมชมเว็บไซต์ของคุณในช่วงเวลาที่ต้องการ
WordPress cron jobs ไม่ทำให้เว็บไซต์ของคุณช้า!
บางทีคุณอาจคิดว่าถ้า cron-script ใช้เวลานานในการประมวลผลผู้เยี่ยมชมจะต้องรอจนกว่าสคริปต์จะทำงาน Nope! เป็นไปได้อย่างไร? หากคุณดูwp-cron.phpไฟล์คุณจะพบบรรทัด
ignore_user_abort(true);
มันเป็นการphp.iniกำหนดค่าที่กำหนดว่าถ้าคุณหยุดโหลดไซต์ / สคริปต์สคริปต์จะไม่หยุดการทำงาน
หากคุณดูwp-includes/cron.phpไฟล์คุณจะพบบรรทัดดังนี้
wp_remote_post( $cron_url, 
array('timeout' => 0.01,
 'blocking' => false, 
 'sslverify' => apply_filters('https_local_ssl_verify', true)) );
นั่นหมายความว่า WordPress จะรอเพียง 0.01 วินาทีสำหรับการกระตุ้นการทำงานจากนั้นมันจะยกเลิก แต่เมื่อคุณตั้งค่าignore_user_abortให้trueสคริปต์จะทำงาน ฟังก์ชั่นนี้เป็นข้อได้เปรียบอย่างมากในการใช้งานสคริปต์ขนาดใหญ่ในงาน WordPress cron
ฟังก์ชั่นที่ให้ความช่วยเหลือ:
               
              
schedule_event( $_SESSION['insert_id'] );ยิงที่ไหนและอย่างไร