大概您已经在某处保存了过期数据,所以请设置wp_cron
要每天运行的作业。该作业应检查过期日期,并更改过期用户的角色。
if ( ! wp_next_scheduled( \'alter_user_role_hook\' ) ) {
wp_schedule_event( strtotime(\'tomorrow\'), \'daily\', \'alter_user_role_hook\' );
}
function alter_user_role_function() {
global $wpdb;
$today = date(\'Y-m-d H:i:s\',strtotime(\'today\'));
$expired = $wdpb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE expired_key < {$today}");
if (!empty($expired)) {
foreach ($expired as $uid) {
wp_update_user(
array (
\'ID\' => $uid,
\'role\' => \'havent_paid\'
)
);
}
}
}
add_action( \'alter_user_role_hook\', \'alter_user_role_function\' );
我假设过期日期存储在用户meta中,我猜测的是角色slug。
未经测试,但应该很接近。我会改变时间组件,以便它在您的站点上的某个低流量时间运行。