临时允许某些用户角色观看一些受限制的内容

时间:2017-01-24 10:41:24

标签: php wordpress woocommerce user-roles restrictions

在WordPress / WooCommerce中,我有一个使用用户角色的网上商店,基于这些角色,您可以看到不同的页面/产品。

我要做的是添加一种允许某些用户角色临时查看的方式,与其他用户角色相同的东西。

让我们说,我有4个不同的用户角色:

  1. 管理
  2. 高级会员
  3. 标准会员
  4. 默认会员
  5. 我是否有可能(按下按钮)按下时,会将受限制的内容显示为“默认会员”,以便将其视为“高级会员”?

    我希望不要永久更改用户的角色,然后再将其更改。这有可能吗?

    由于

1 个答案:

答案 0 :(得分:3)

是的,如果您在页面模板中为现有用户角色视图(或显示)条件添加 OR 条件,则可以。此条件将基于用户元数据中设置的自定义字段。

因此,当您点击该“按钮”时,它将更新用户自定义字段的值,并允许显示“高级内容”(例如)。为此,您可以使用get_user_meta()update_user_meta() Wordpress函数。

首先在php文件或模板的开头定义2个变量:

// Getting the user iD
$user_id = get_current_user_id();
// Looking if our user custom field exist and has a value
$custom_value = get_user_meta($user_id, '_custom_user_meta', true);

然后你的情况会有点像:

if($user_role == 'premium' && $custom_value){
    // Displays the premium content
}

现在,当按下“按钮”时,它会将$ custom_value更新为true,允许此用户在表单提交(或使用ajax)上查看优质内容。

所以你必须把这个代码放在上面的两个变量之后:

if('yes' == $_post['button_id']){
    // $custom_value and $user_id are already defined normally (see above)
    if($custom_value){
        update_user_meta($user_id, '_custom_user_meta', 0); // updated to false
    } else {
        update_user_meta($user_id, '_custom_user_meta', 1); // updated to true
    }
}

这应该有用......

  

更新 (根据您的评论)

     

或者,对于评论中的管理员,您可以在条件中定位 'administrator' 用户角色并 && 一个特殊的cookie,将由你的“按钮”设置。这样您就不必使用自定义字段。