Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress:具有自定义角色的用户无法访问wp admin_Wordpress_User Roles - Fatal编程技术网

WordPress:具有自定义角色的用户无法访问wp admin

WordPress:具有自定义角色的用户无法访问wp admin,wordpress,user-roles,Wordpress,User Roles,首先,我是一名WordPress学习者。很抱歉,如果我的代码看起来很愚蠢 我已经创建了一个具有自定义用户角色的自定义主题。我没有开发任何插件 在我的functions.php文件中,我编写了以下代码来创建用户角色。分配给此角色的用户应该登录到管理员,但只能访问其配置文件页面 add_action('init', 'yrc_cst_register_role_customer_service_rep'); /** * Register new user role */ function y

首先,我是一名WordPress学习者。很抱歉,如果我的代码看起来很愚蠢

我已经创建了一个具有自定义用户角色的自定义主题。我没有开发任何插件

在我的functions.php文件中,我编写了以下代码来创建用户角色。分配给此角色的用户应该登录到管理员,但只能访问其配置文件页面

add_action('init', 'yrc_cst_register_role_customer_service_rep');

/**
 * Register new user role
 */

function yrc_cst_register_role_customer_service_rep() {

    $wp_roles = new WP_Roles();

    $wp_roles->remove_role('subscriber');
    $wp_roles->remove_role('editor');
    $wp_roles->remove_role('contributor');
    $wp_roles->remove_role('author');

    $service_rep_caps = array(
        'read'              => false,
        'create_posts'      => false,
        'edit_posts'        => false,
        'edit_others_posts' => false,
        'publish_posts'     => false,
        'manage_categories' => false,
        'manage_options'    => false,
    );

    add_role('customer_service', __('Customer Service'), $service_rep_caps);
}
我已删除除管理员之外的所有角色,因为此门户不需要其他角色。管理员将仅创建具有客户服务角色的用户

我没有在系统中安装第三方插件

具有自定义角色的用户可以通过工作正常的自定义登录页面登录到系统。但每当他们试图访问其个人资料页面时,就会出现以下错误消息:

对不起,您不允许访问此页面

是否有类似于“编辑配置文件”=>true的内容


我一定是做错了什么,但我有限的知识还不足以解决这个问题。如果您有任何建议,我们将不胜感激。

您只需将管理选项更改为true即可 但请注意,通过允许manage_选项为true,这些用户也可以访问仪表板的其他部分

 $service_rep_caps = array(
    'read'              => false,
    'create_posts'      => false,
    'edit_posts'        => false,
    'edit_others_posts' => false,
    'publish_posts'     => false,
    'manage_categories' => false,
    'manage_options'    => true, // Most plugins and pages check for manage_options for checking access level to allow access to pages and settings.
);

您可以这样做:

这将克隆订阅服务器角色功能并为其创建您的角色

add_action('init', 'CreatecloneRoleSubscriber');

function CreatecloneRoleSubscriber()
{
    global $wp_roles;
    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    $sub = $wp_roles->get_role('Subscriber');
    //Adding a 'new_role' with all subscriber caps
    $wp_roles->add_role('customer_service', 'Customer Service', $sub->capabilities);
}

<>编辑:阅读问题评论< /p> < p>刚才发现这个解决方案,我认为很干净,可以用一个新的角色进入WP管理员:

将访问上限添加到后端 将cap
view\u admin\u dashboard
read
添加到您的新角色中

显示管理栏 将此功能添加到wordpress

#functions.php
添加过滤器('show_admin_bar',函数(){
如果(当前用户可以(“查看管理仪表板”))
返回true;
返回false;
}, 10);

我想他需要'read'=>是真的,但再说一次-默认情况下,订阅者只允许访问他们的个人资料页,对吗?是的-角色应该只有'read'在这种情况下,我需要添加
'capabilities'=>'subscriber'
?更改为
'read'=>true
没有任何区别。另外,对于自定义角色,定义功能的正确方式是什么,这样他只能访问他的个人资料页面?请看:是的,但根据使用此角色克隆的用户不允许的要求-很棒!这对我有用!但是我需要先添加
remove_role()
,然后将角色重新应用于用户。否则功能将无法更新。@Skatox那么,您删除了订户角色吗?@Stender否为了更新更改,我删除了客户服务(我自己的角色)。