Answers:
当有人访问您的网站时,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...
}
你可以看到这些these
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 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
代替time(),使用strtotime()函数,以便您可以指定一天中的时间-它会使用今天的日期和您指定的时间。因此,在您的情况下:
strtotime('16:20:00'); // 4:20 PM
该wp_schedule_event
函数的用法如下所示:
wp_schedule_event( strtotime('16:20:00'), 'daily', 'import_into_db' );
好吧,1427488800将于2015年3月27日解决,因此您的活动甚至还没有开始。
另外,请记住,仅当有人访问该站点时,预定的WP事件才会触发。
该代码对我有用,我认为它更接近原始问题。您希望获得执行时间的UNIX时间+时区。一旦执行了cron并将其从WP中删除,它将在您指定的时间重新创建自己。
在以下示例中,我每天早上6点在AEST(GMT + 10)上工作。因此,我每天将其安排为格林尼治标准时间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');
}
time()
函数不使用输入参数,而是尝试使用该strtotime()
函数或该strftime()
函数,以从字符串创建自定义时间戳。但是,如果您已经有了时间戳,则不需要它们。