暂时允许某些用户角色观看某些受限内容
Temporary allowing certain users role to watch some restricted content
在 WordPress/WooCommerce 中,我有一个使用用户角色的网上商店,基于这些角色,您可以看到不同的 Pages/Products。
我想要做的是添加一种方法,允许某些用户角色临时查看与其他用户角色相同的内容。
比方说,我有 4 个不同的用户角色:
- 管理员
- 高级会员
- 标准会员
- 默认成员
我是否可以制作(假设是一个按钮)当按下时,将受限内容显示到 "Default Member" 以便像 "Premium Member" 一样查看它?
我最好不要永久更改用户的角色,然后再将其更改回来。这在某种程度上可能吗?
谢谢
是的,如果您在页面模板中为您的现有用户角色视图 (或显示)添加 OR
条件 条件。此条件将基于用户元数据中设置的自定义字段。
因此,当您单击该“按钮”时,它将更新用户自定义字段的值并允许显示“高级内容”(例如) .为此,您可以使用 get_user_meta()
and 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).
因此您必须将此代码放在上面的 2 个变量之后:
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
}
}
这应该有效……
Update (based on your comment)
Alternatively, for The Admin as in your comment, You can target 'administrator'
user role in your condition AND (&&
) a special cookie that will be set by your "button". This way you will not have to use a custom field.
在 WordPress/WooCommerce 中,我有一个使用用户角色的网上商店,基于这些角色,您可以看到不同的 Pages/Products。
我想要做的是添加一种方法,允许某些用户角色临时查看与其他用户角色相同的内容。
比方说,我有 4 个不同的用户角色:
- 管理员
- 高级会员
- 标准会员
- 默认成员
我是否可以制作(假设是一个按钮)当按下时,将受限内容显示到 "Default Member" 以便像 "Premium Member" 一样查看它?
我最好不要永久更改用户的角色,然后再将其更改回来。这在某种程度上可能吗?
谢谢
是的,如果您在页面模板中为您的现有用户角色视图 (或显示)添加 OR
条件 条件。此条件将基于用户元数据中设置的自定义字段。
因此,当您单击该“按钮”时,它将更新用户自定义字段的值并允许显示“高级内容”(例如) .为此,您可以使用 get_user_meta()
and 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).
因此您必须将此代码放在上面的 2 个变量之后:
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
}
}
这应该有效……
Update (based on your comment)
Alternatively, for The Admin as in your comment, You can target
'administrator'
user role in your condition AND (&&
) a special cookie that will be set by your "button". This way you will not have to use a custom field.