我刚刚在functions.php文件中使用以下代码创建了“Lister”的自定义用户角色。 我在后端工作了新角色,并创建了一个用户进行测试。登录后,唯一的菜单选项是配置文件和仪表板。为什么不是Posts菜单项呢? 感谢
$lister_user_role = add_role('lister', __('Lister'),
array(
'read' => true, //true allows this capability
'edit_posts' => true, //allows user to edit posts
'create_posts' => true, //allows users to create posts
'publish_posts' => true, //allows users to publish posts
'delete_posts' => false, //do not allow user to delete posts
'edit_others_posts' => false, //do not allow a lister to edit others' posts
'edit_themes' => false, //do not allow a lister to edit theme
'install_plugins' => false, //do not allow a lister to install plugins
'update_plugin' => false, //do not allow a lister to update plugins
'update_core' => false //do not allow a lister to update WP Core
)
);
答案 0 :(得分:3)
来自codex(https://codex.wordpress.org/Function_Reference/add_role)中的add_role文章:
如果要定义自定义角色,并使用add_role()向角色添加功能,请注意修改功能数组并重新执行add_role()不一定会使用新功能列表更新角色。如果角色已存在于数据库中,则add_role()函数会短路。
换句话说,当您第一次创建角色时,&执行了您的网站,角色已创建。在那段时间你可能没有设置你想要的所有字段。因此,要更新新用户角色,您应首先使用remove_role(https://codex.wordpress.org/Function_Reference/remove_role)&删除它。然后再次添加add_role。
此外,在重新创建角色后,尝试将用户分配给任何其他角色&然后再回到你的“Lister”角色。希望这会有所帮助。