我需要为访客/客人分配一个角色

时间:2013-07-24 作者:emma

有没有办法在WordPress中为客人创建一个“角色”?我正在使用一个角色可见性插件,它允许我选择每个角色的可见性类型。然而,客人没有角色。我可以创建一个角色,但不知道如何将其链接到“来宾”。。。

3 个回复
SO网友:Brad Dalton

将add\\u角色与任何功能阵列一起使用。示例:

add_role( \'custom_role\', \'Custom Role\', array( \'read\' => true ) );

SO网友:user1627363

实际上,您也可以将“guest”视为用户角色。无论如何,要找到客人,您可以使用以下方法:

<?php
global $user_login;
if( $user_login ) {
echo \'user logged in\';
} else {
echo \'user not logged in\';
}
?>
然后你可以添加你想要的。

SO网友:user161546

我想您可能会使用名为“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、页面、菜单等)重复该操作,则需要使用此选项。可以使用多个,但管理它们可能很快变得复杂,并成为可见性错误的来源。

结束

相关推荐