成员资格订阅,在订阅用完时更改用户角色

时间:2013-08-08 作者:talven

有一堆又一堆的会员插件,它们都专注于根据用户选择的订阅限制网站内容。

然而,我只希望在订阅时间结束时,用户角色从“已付费”更改为“尚未付费”,仍然允许他们查看所有网站内容,但仅限于我之前设置的角色功能。

EDIT (澄清):我的用户有一个公开的个人资料页面,他们在上面展示自己和他们的服务。他们每年付费以保持公开,但如果他们没有付费,他们应该被隐藏在网站之外,即将角色改为“隐形”而不是“公开”。今天,我手动完成这项工作,在每个用户身上保留日期,并在需要时更改他们的角色,这相当乏味。

1 个回复
SO网友:s_ha_dum

大概您已经在某处保存了过期数据,所以请设置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。

未经测试,但应该很接近。我会改变时间组件,以便它在您的站点上的某个低流量时间运行。

结束

相关推荐

Membership Plugin

我正在为高级博客内容寻找一个好的插件。我的客户希望提供30次免费试用以及每月/6个月/每年付费的计划。它应该为每个人显示一个除此之外的帖子,即使他们作为客人在网站上,没有任何会员资格、试用或特价。它还需要通过贝宝接收付款,并在付款后自动打开订阅。我想能够自定义注册页面,以添加地址和电话号码等其他字段。