我有一个从API获取数据的函数。 我想每天在特定时间运行此功能。我已经使用下面的代码来实现此功能,但是每分钟运行就很麻烦。我在5分钟的间隔内使用此代码进行计划的测试。我的API代码太长。我只是在这里使用测试目的示例代码。
register_activation_hook(__FILE__, 'my_activation');
add_action( 'wp', 'my_activation' );
function my_activation() {
if (! wp_next_scheduled ( 'my_hourly_event' )) {
wp_schedule_event(time(), 'hourly', 'my_hourly_event');
}
}
add_action('my_hourly_event', 'do_this_hourly');
function do_this_hourly() {
// do something every hour
$t = time();
$user_login = 'test-'.$t;
$user_email = 'test-'.$t.'@yahoo.com';
$user_pass = '123456';
$userdata = compact( 'user_login', 'user_email', 'user_pass' );
$user_id = wp_insert_user( $userdata ) ;
// On success.
if ( ! is_wp_error( $user_id ) ) {
echo "User created : ". $user_id;
}else{
echo "<h1>User already exsist</h1>";
}
}
register_deactivation_hook(__FILE__, 'my_deactivation');
function my_deactivation() {
wp_clear_scheduled_hook('my_hourly_event');
}
答案 0 :(得分:2)
您可以使用crontab进行操作,例如每天06:02。
crontab -e
,然后添加6 2 * * * curl http://api
答案 1 :(得分:1)
wp_schedule_event函数中的用法如下:
使用strtotime()函数,以便您可以指定一天中的时间-它会使用今天的日期和您指定的时间。
wp_schedule_event( strtotime('16:20:00'), 'daily', 'my_daily_event' );
修改
您必须设置排定的下一个排定时间
if (!wp_next_scheduled('my_daily_event')) {
$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.
// Ex: $time = strtotime("+1 day");
wp_schedule_event($time, 'daily', 'my_daily_event');
}