有一堆又一堆的会员插件,它们都专注于根据用户选择的订阅限制网站内容。
然而,我只希望在订阅时间结束时,用户角色从“已付费”更改为“尚未付费”,仍然允许他们查看所有网站内容,但仅限于我之前设置的角色功能。
EDIT (澄清):我的用户有一个公开的个人资料页面,他们在上面展示自己和他们的服务。他们每年付费以保持公开,但如果他们没有付费,他们应该被隐藏在网站之外,即将角色改为“隐形”而不是“公开”。今天,我手动完成这项工作,在每个用户身上保留日期,并在需要时更改他们的角色,这相当乏味。
有一堆又一堆的会员插件,它们都专注于根据用户选择的订阅限制网站内容。
然而,我只希望在订阅时间结束时,用户角色从“已付费”更改为“尚未付费”,仍然允许他们查看所有网站内容,但仅限于我之前设置的角色功能。
EDIT (澄清):我的用户有一个公开的个人资料页面,他们在上面展示自己和他们的服务。他们每年付费以保持公开,但如果他们没有付费,他们应该被隐藏在网站之外,即将角色改为“隐形”而不是“公开”。今天,我手动完成这项工作,在每个用户身上保留日期,并在需要时更改他们的角色,这相当乏味。
大概您已经在某处保存了过期数据,所以请设置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。未经测试,但应该很接近。我会改变时间组件,以便它在您的站点上的某个低流量时间运行。
我正在为高级博客内容寻找一个好的插件。我的客户希望提供30次免费试用以及每月/6个月/每年付费的计划。它应该为每个人显示一个除此之外的帖子,即使他们作为客人在网站上,没有任何会员资格、试用或特价。它还需要通过贝宝接收付款,并在付款后自动打开订阅。我想能够自定义注册页面,以添加地址和电话号码等其他字段。