Wp_Schedule_Event 특정 시간에 매일


9

매일 16:20에 함수를 실행하기 위해 다음 코드를 작성합니다.

그러나 코드의 문제라고 생각합니다.

작동하지 않는

에포크 타임 스탬프 : 1427488800

2015 년 3 월 28 일 오전 1시 10:00

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

답변:


18

누군가 웹 사이트를 방문하면 WP Cron이 실행됩니다. 따라서 아무도 방문하지 않으면 cron이 실행되지 않습니다.

이제 두 가지 해결책이 있습니다.

  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/

주문 Wp cron

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

크론 리눅스

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

구글 검색


12

대신 시간 () 를 사용 한 strtotime () 는 사용자가 지정하는 시간에 오늘 날짜를 사용합니다 - 당신은 하루의 시간을 지정할 수 있도록 기능. 따라서 귀하의 경우 :

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

wp_schedule_event함수의 사용법 은 다음과 같습니다.

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

2

1427488800은 2015 년 3 월 27 일로 해결되므로 이벤트가 아직 시작되지도 않습니다.

또한 예정된 WP 이벤트는 누군가 사이트에 방문한 경우에만 발생합니다.


자, 어떻게 고쳐? @vancoder
Mortzea

0

이 코드는 저에게 효과적입니다. 원래 질문에 더 가깝습니다. 실행하려는 UNIX 시간 + 시간대를 가져 오려고합니다. cron이 실행되고 WP에서 제거되면 지정한 시간에 cron이 다시 작성됩니다.

다음 예에서는 매일 오전 6시 AEST (GMT + 10) @ 오전 6시에 작동합니다. 그래서 매일 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.