授予多个角色对特定管理菜单项的访问权限

时间:2020-04-11 作者:Yato

我正在编写一个插件,它提供了一个管理菜单项,只有特定的自定义用户角色(示例中的“customrole”)才能访问该菜单项。我已按如下方式实现了此功能,并且它是有效的:

function add_admin_menu() {
add_menu_page(
    \'Custom-Plugin\',
    \'Custom-Plugin\',
    \'customrole\',
    \'custom-plugin\',
    \'init_custom_menu_page\'
    );
}
问题是管理员不再具有访问此菜单项的权限;但是,我希望管理员仍然能够访问它(以及“customrole”-用户)。我怎样才能做到这一点?

我正在使用"Members" 插件创建自定义用户角色,如果这样做有区别的话。

提前感谢!

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您不应该使用角色来处理菜单页的权限。相反,请使用功能,然后将这些功能分配给应该具有访问权限的角色。

例如,而不是创建customrole 角色,使用自定义功能,如manage_custom_plugin:

add_menu_page(
    \'Custom-Plugin\',
    \'Custom-Plugin\',
    \'manage_custom_plugin\',
    \'custom-plugin\',
    \'init_custom_menu_page\'
);
现在,使用Members插件可以输入manage_custom_plugin 进入“自定义功能”框,并将其添加到您需要的任何角色。

在代码中,您可以使用WP_Roles::add_cap(), 像这样:

$roles = wp_roles();

$roles->add_cap( \'administrator\', \'manage_custom_plugin\' );
$roles->add_cap( \'editor\', \'manage_custom_plugin\' );
请注意,这些函数会写入数据库,因此只能在插件或主题激活时运行一次。

相关推荐

具有自定义字段的BP_HAS_MEMBERS

我想在概要文件自定义字段有条件的地方循环成员,让我解释一下,我在成员buddypress站点上有纬度和经度作为自定义字段,我需要使用bp\\U has\\U member只循环设置了纬度和经度的成员if ( bp_has_members( \'per_page=0\' ) ) : ?> endif; 我尝试过(“Dirección”是我的自定义xprofile,我正在使用它来筛选没有地址的成员),但是这不起作用,或者出现了问题。bp_has_members( \'per_page=