有人可以在这里指出正确的方向吗?
我正在尝试建立一个插件,该插件在激活用户时设置3个月后,在激活时设置cron作业以更改用户的user_role。停用插件后,也应删除cron作业。
到目前为止的插件代码为:
<?php
/*
Plugin Name: Cron Job
*/
add_filter( 'cron_schedules', 'example_add_cron_interval' );
function example_add_cron_interval( $schedules ) {
$schedules['five_seconds'] = array(
'interval' => 5,
'display' => esc_html__( 'Every Five Seconds' ),
);
return $schedules;
}
function cron_hook(){
$users = get_users(
array(
'fields' => array( 'ID', 'user_registered' ),
'role' => 'coaching',
)
);
foreach ( $users as $user ) {
$time = $user->user_registered;
if(strtotime($time) < strtotime('-3 months')) {
$u = new WP_User( $user->ID );
// Remove role
print_r($u);
$u->remove_role( 'coaching' );
// Add role
$u->add_role( 'platinum' );
}
}
}
//echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>';
public static function activate() {
wp_schedule_event( time(), 'five_seconds', 'cron_job' );
}
public static function deactivate() {
wp_clear_scheduled_hook('cron_job');
}
我正在通过cPanel运行wp-cron.php(当前设置为测试的5秒)。
答案 0 :(得分:0)
设法找到解决方案。
我完成的代码是:
register_activation_hook ( __FILE__, 'cron_job' );
function cron_job()
{
wp_schedule_event( time(), 'hourly', 'hourly_job' );
}
add_action( 'hourly_job', 'cron_job_task' );
function cron_job_task ()
{
$users = get_users(
array(
'fields' => array( 'ID', 'user_registered' ),
'role' => 'coaching',
)
);
foreach ( $users as $user ) {
$time = $user->user_registered;
if(strtotime($time) < strtotime('-3 months')) {
$u = new WP_User( $user->ID );
$u->remove_role( 'coaching' );
$u->add_role( 'platinum' );
}
}
}
?>
每小时设置一次cPanel cron作业。