Wp_Schedule_Event ทุกวันในเวลาที่กำหนด


9

ฉันเขียนโค้ดต่อไปนี้เพื่อเรียกใช้ฟังก์ชั่นของฉันทุกวันเวลา 16:20

แต่ฉันเดาว่าเป็นปัญหาในรหัส ..

ไม่ทำงาน

เวลาประทับของยุค: 1427488800

3/28/2015 1:10:00 AM

if( !wp_next_scheduled( 'import_into_db' ) ) {
wp_schedule_event( time('1427488800'), 'daily', 'import_into_db' );

function import_into_db(){

////My code

}
add_action('wp', 'import_into_db');
}

1
time()ฟังก์ชั่นไม่ได้ใช้อาร์กิวเมนต์การป้อนข้อมูลให้ลองใช้strtotime()ฟังก์ชั่นหรือstrftime()ฟังก์ชั่นแทนเพื่อสร้างการประทับเวลาที่กำหนดเองจากสตริง แต่ถ้าคุณได้รับการประทับเวลาแล้วคุณไม่ต้องการมัน
Birgire

คำตอบ:


19

WP Cron ทำงานเมื่อมีคนเยี่ยมชมเว็บไซต์ของคุณ ดังนั้นหากไม่มีใครเข้าชม cron จะไม่ทำงาน

ขณะนี้มี 2 วิธีแก้ไข:

  1. ปิดใช้งาน WP Cron ใช้งาน cron จริงและปรับแต่ง

https://support.hostgator.com/articles/specialized-help/technical/wordpress/how-to-replace-wordpress-cron-with-a-real-cron-job

  1. ใช้ช่วงเวลาที่กำหนดเองในwp_schedule_event():

    function myprefix_custom_cron_schedule( $schedules ) {
        $schedules['every_six_hours'] = array(
            'interval' => 21600, // Every 6 hours
            'display'  => __( 'Every 6 hours' ),
        );
        return $schedules;
    }
    add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' );
    
    //Schedule an action if it's not already scheduled
    if ( ! wp_next_scheduled( 'myprefix_cron_hook' ) ) {
        wp_schedule_event( time(), 'every_six_hours', 'myprefix_cron_hook' );
    }
    
    ///Hook into that action that'll fire every six hours
     add_action( 'myprefix_cron_hook', 'myprefix_cron_function' );
    
    //create your function, that runs on cron
    function myprefix_cron_function() {
        //your function...
    }
    

และคุณสามารถเห็นสิ่งเหล่านี้ได้

http://www.nextscripts.com/tutorials/wp-cron-scheduling-tasks-in-wordpress/

http://www.iceablethemes.com/optimize-wordpress-replace-wp_cron-real-cron-job/

http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/

cp Wp ที่กำหนดเอง

http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules

http://www.smashingmagazine.com/2013/10/16/schedule-events-using-wordpress-cron/

http://www.viper007bond.com/2011/12/14/how-to-create-custom-wordpress-cron-intervals/

http://www.sitepoint.com/mastering-wordpress-cron/

https://tommcfarlin.com/wordpress-cron-jobs/

http://www.paulund.co.uk/create-cron-jobs-in-wordpress

cron linux

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

http://www.thesitewizard.com/general/set-cron-job.shtml

http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800

ค้นหา Google


12

แทนที่จะใช้time ()ให้ใช้strtotime ()ฟังก์ชั่นเพื่อให้คุณสามารถระบุเวลาของวัน - มันจะใช้วันที่วันนี้กับเวลาที่คุณระบุ ดังนั้นในกรณีของคุณ:

strtotime('16:20:00'); // 4:20 PM

การใช้งานในwp_schedule_eventฟังก์ชั่นจะเป็นดังนี้:

wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );

2

1427488800 แก้ไขเป็น 27 มีนาคม 2558 ดังนั้นกิจกรรมของคุณยังไม่ได้เริ่ม

นอกจากนี้โปรดทราบว่าเหตุการณ์ WP ที่กำหนดเวลาไว้จะดำเนินการเฉพาะเมื่อมีผู้เยี่ยมชมไซต์ในเวลานั้น


ตอนนี้แก้ไขอย่างไร @vancoder
Mortzea

0

รหัสนี้ใช้งานได้สำหรับฉันฉันเชื่อว่ามันใกล้เคียงกับคำถามเดิม คุณต้องการรับเวลา + เขตเวลา UNIX เมื่อคุณต้องการให้ดำเนินการ เมื่อ cron ดำเนินการและถูกลบออกจาก WP มันจะสร้างตัวเองใหม่ในเวลาที่คุณระบุ

ในตัวอย่างต่อไปนี้ฉันใช้งานกับ AEST (GMT + 10) @ 6AM ทุกเช้า ดังนั้นฉันกำลังกำหนดเวลาสำหรับ GMT 20:00 ในแต่ละวัน

if (!wp_next_scheduled('cron_name')) {
    $time = strtotime('today'); //returns today midnight
    $time = $time + 72000; //add an offset for the time of day you want, keeping in mind this is in GMT.
    wp_schedule_event($time, 'daily', 'cron_name');
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.