自定义用户角色未按预期工作

时间:2019-02-22 作者:nickpish

我已在中定义了自定义用户角色functions.php 名为“Dashboard Admin”,具有以下定义的功能。该网站有许多自定义帖子类型-所有这些都具有功能post- 我基本上希望将此角色的功能锁定为仅创建/编辑/删除帖子(任何类型),而不是页面、管理类别或任何其他更高级别的管理任务。出于某种原因,使用下面的数组,当以该用户类型登录时,只能创建新帖子和“提交以供审阅”,而不能打开或编辑任何帖子类型的任何现有帖子-我这里缺少什么?提前感谢!

$result = add_role(
    \'dashboard_admin\',
    __( \'Dashboard Admin\' ),
    array(
        \'read\'                   => true,
        \'publish_posts\'          => true,
        \'edit_posts\'             => true,
        \'edit_others_posts\'      => true,
        \'edit_published_posts\'   => true,
        \'delete_posts\'           => true,
        \'delete_others_posts\'    => true,
        \'delete_published_posts\' => true,
        \'read_private_posts\'     => true,
        \'edit_private_posts\'     => true,
        \'delete_private_posts\'   => true,
        \'upload_files\'           => true,
        \'publish_pages\'          => false,
        \'edit_pages\'             => false,
        \'edit_others_pages\'      => false,
        \'delete_pages\'           => false,
        \'delete_published_pages\' => false,
        \'delete_others_pages\'    => false,
        \'manage_categories\'      => false,
        \'install_plugins\'        => false,
        \'activate_plugins\'       => false,
        \'update_plugins\'         => false,
        \'edit_plugins\'           => false,
        \'delete_plugins\'         => false,
        \'edit_dashboard\'         => false,
        \'switch_themes\'          => false,
        \'edit_theme_options\'     => false,
        \'create_users\'           => false,
        \'list_users\'             => false,
        \'edit_users\'             => false,
        \'delete_users\'           => false,
        \'promote_users\'          => false,
        \'remove_users\'           => false,
        \'customize\'              => false,
        \'manage_options\'         => false,
        \'delete_site\'            => false,
        \'import\'                 => false,
        \'export\'                 => false,
    )
);

1 个回复
SO网友:nickpish

好的,如果其他人在定义自定义用户角色时遇到类似的问题,我似乎已经按照WordPress Codex:

如果要定义自定义角色,并使用add\\u role()向角色添加功能,请注意,修改功能数组并重新执行add\\u role()不一定会使用新功能列表更新角色。如果数据库中已经存在该角色,则add\\u role()函数会短路。

这种情况下的解决方法是在add\\u role()调用之前,先调用一个remove\\u role()调用,该调用的目标是要添加的角色。

这只是为了发展。一旦确定了功能列表,就没有必要保留remove\\u role()代码,尽管这样做实际上没有坏处。

因此,在我的情况下,我之前添加了以下内容add_role():

if ( get_role(\'dashboard_admin\') ) {
    remove_role(\'dashboard_admin\');
}