我想您可能会使用名为“UAM”的“用户-用户组管理器”。
我最近也有同样的问题。
解决方案有几个方面,每个方面都必须满足:
1-创建一个名为“custom visitor”的常规角色,只允许访问者的权限
2-在UAM中,您现在将在创建新组时显示您的“自定义访问者”。因此,您可以创建一个仅附加一个角色的UAM组:“自定义访问者”
3-现在,UAM必须将未登录的用户识别为该“自定义访问者”,并将角色关联给他(该操作不是由WP完成的)。这可以通过UAM补丁完成:在init(或\\u construct类)中,可以添加这样的代码(“自定义访问者”被命名为“UAM访问者”:
// ###trebly:b60119:hold user simply logged in as visitor role
global $user_login, $wp_roles;
$exist_visitor_role = false;
foreach ($wp_roles->role_names as $role => $name) {
if ($role == "uam-visitor") {
$exist_visitor_role = true;
break;
}
}
// Anyway visitor role must be handled even have not been be permanently defined
if (! $exist_visitor_role == true) {
add_role(\'uam-visitor\', \'Custom UAM visitor Role (WARNING: don\\\'forget to set the role permanently : default read all)\', array(\'read\' => true));
}
// If the visitor is not logged in he gets necessarily the custom "uam-visitor" role
// ####trebly:CAREFULL:The problem is that some plugins can have checked no role for visitor : this must be checked
// by $user_login or wp_get_current_user() and check and role empty
// if role has been just set a Warning is displayed to upgrade because he has read all capability by default
if( ! $user_login ) {
// can have the role already set
$current_user = wp_get_current_user();
$current_user->add_role(\'uam-visitor\');
}
4- Now you can :
a-将元素附加到UAM访问者组:这样,您将向访问者隐藏所需的元素,但可以将这些元素视为admin。
但是如果你有另一个过滤器插件,因为它可以在UAM之前运行,它将无法检查角色。要解决此问题,您必须将以下说明添加到WP的用户标识过程中(未登录时):
if( ! $user_login ) {
// can have the role already set
$current_user = wp_get_current_user();
$current_user->add_role(\'custom-visitor\');
}
致以最诚挚的问候
三倍
Note about simulation of roles with WP : 同样,您可以使用这种可能性为测试访问者模拟您的站点行为,而真正的访问者不会看到相关元素。为此,创建一个UAM组时,仅使用一个新角色“测试访问者”,其权限不超过访问者权限(附加到UAM组的事实除外,该事实允许向其他人隐藏元素:取决于UAM对应的参数),然后创建一个具有“测试访问者”角色的用户,登录后,他将看到UAM向其他访问者隐藏的元素。当测试成功时,因为您已经创建了“uam访问者”,您只需将uam组的角色从“测试访问者”切换到“uam访问者”。哪项操作将允许所有人(任何未登录的人:如代码中所定义)访问仍然临时连接到UAM组的元素。通过这种方式,您可以轻松切换所有元素,而无需对每个元素单独更改任何内容。
稍后,当您将元素附加到保留的UAM组时,未附加的元素将被访问者明确可见(不再对这些元素执行筛选操作)。如果您希望能够在不创建另一个UAM组和测试角色的情况下,对另一组元素(=组件:post、页面、菜单等)重复该操作,则需要使用此选项。可以使用多个,但管理它们可能很快变得复杂,并成为可见性错误的来源。