플러그인의 wp_cron_event()가 cron 이벤트를 스케줄링하지 않음
WordPress 플러그인을 만들고 있는데 플러그인이 활성화되면 5분마다 실행되도록 cron 작업을 예약해야 합니다.
제 암호는 이렇습니다.
// Register plugin activation hook
function my_plugin_activate() {
if( !wp_next_scheduled( 'my_function_hook' ) ) {
wp_schedule_event( time(), '5', 'my_function_hook' );
}
}
register_activation_hook( __FILE__, 'my_plugin_activate' );
// Register plugin deactivation hook
function my_plugin_deactivate(){
wp_clear_scheduled_hook('my_function_hook');
}
register_deactivation_hook(__FILE__,'my_plugin_deactivate');
// Function I want to run when cron event runs
function my_function(){
//Function code
}
add_action( 'my_function_hook', 'my_function');
이 플러그인 https://wordpress.org/plugins/wp-crontrol/을 사용하여 cron 이벤트를 확인해도 추가된 것이 없습니다.my_function'을 5분 간격으로 실행하는 cron 이벤트가 추가되어야 하는데 오류가 없습니다.
참조:
반복의 유효한 값은 hourly, daily 및 twisedaily입니다.이것들은 wp_get_schedules()의 'cron_schedules' 필터를 사용하여 확장할 수 있습니다.
따라서 5분마다 실행되는 사용자 지정 일정만 추가하면 됩니다.
<?php // Requires PHP 5.4+.
add_filter( 'cron_schedules', function ( $schedules ) {
$schedules['every-5-minutes'] = array(
'interval' => 5 * MINUTE_IN_SECONDS,
'display' => __( 'Every 5 minutes' )
);
return $schedules;
} );
if( ! wp_next_scheduled( 'my_function_hook' ) ) {
wp_schedule_event( time(), 'every-5-minutes', 'my_function_hook' );
}
WP Cron은 누군가가 당신의 웹사이트를 방문하면 실행됩니다.따라서 아무도 방문하지 않으면 cron은 실행되지 않습니다.
다음 2가지 솔루션이 있습니다.
- WP Cron을 디세블로 하고 실제 cron 작업을 사용하여 커스터마이즈합니다.
합니다.
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
cron 리눅스
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
@dingo_d 코멘트대로 WordPress Cron은 서버 Cron과 같이 동작하지 않습니다.WordPress Cron은 페이지 로드 시 실행됩니다.데이터베이스에 예약된 이벤트가 있는지 확인하고 이벤트가 예약된 경우 작업을 실행합니다.따라서 5분 이내에 웹사이트를 방문하지 않으면 해당 기간 동안 작업이 실행되지 않습니다.누군가가 웹 사이트를 방문하면 페이지 로드 프로세스가 실행되고 예약된 이벤트가 발생합니다.
WordPress는 서버에서 특별한 Cron 기능을 필요로 하지 않고 동작하도록 설정되어 있습니다.
이 문제를 피하기 위해 웹 사이트를 자동으로 방문하는 서비스를 사용하거나 서버에 자동으로 페이지를 로드하도록 Cron 스크립트를 설정할 수 있습니다.
Linux 서버를 터미널에 ssh로 연결한 후 쓰기crontab -e
Enter 키를 누릅니다.cron 작업을 설정하기 위해 cron 파일을 입력합니다.다음 행을 파일에 추가합니다.
/5 * * * wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron
대용품http://yourdomain.com
를 참조해 주세요.그러면 웹 사이트가 5분마다 방문됩니다.
https://tommcfarlin.com/wordpress-cron-jobs/에서 이 방법에 대한 정보를 얻었기 때문에 WordPress cron 정보가 더 많이 링크되어 있습니다.
언급URL : https://stackoverflow.com/questions/47249581/wp-schedule-event-in-plugin-not-scheduling-a-cron-event
'programing' 카테고리의 다른 글
응답에 useState 훅이 있는 콜백을 사용하는 방법 (0) | 2023.03.31 |
---|---|
ASP 후 아약스에 항변형 토큰을 포함한다.넷 MVC (0) | 2023.03.31 |
jsx의 html 태그 자동 완성(하위 텍스트) (0) | 2023.03.31 |
워드프레스:태그 페이지에서 태그 슬러그를 얻는 방법 (0) | 2023.03.31 |
jQuery - $(문서)를 여러 개 갖는 것은 좋지 않습니다.ready(function() {}); (0) | 2023.03.31 |