我在我的一个插件中使用的自定义帖子遇到了有趣的行为。以下是自定义帖子的参数:
array(
\'label\' => [omitted],
\'labels\' => [omitted],
\'public\' => false,
\'show_ui\' => true,
\'menu_position\' => 21,
\'menu_icon\' => \'dashicons-editor-help\',
\'supports\' => array(\'title\',\'editor\',\'comments\'),
\'capability_type\' => array(\'custom-post\',\'custom-posts\'),
\'show_in_rest\' => false,
\'show_in_menu\' => \'my-plugin\' // Able to create posts with restricted user role if I remove this line.
)
请注意,此自定义帖子类型放在菜单中,这需要
edit_custom-posts
能够访问。
add_menu_page(\'My Plugin Module\', \'My Plugin Module\', \'edit_custom-posts\', \'my-plugin\',\'\',\'dashicons-admin-network\',21);
因为我只想允许站点管理员以及自定义用户角色(让我们称之为插件管理员)能够完全管理这些自定义帖子类型。为此,我为其添加了以下功能:
$cap[\'edit_custom-post\'] = true;
$cap[\'read_custom-post\'] = true;
$cap[\'delete_custom-post\'] = true;
$cap[\'edit_custom-posts\'] = true;
$cap[\'edit_others_custom-posts\'] = true;
$cap[\'publish_custom-posts\'] = true;
$cap[\'read_private_custom-posts\'] = true;
$cap[\'edit_published_custom-posts\'] = true;
$cap[\'delete_published_custom-posts\'] = true;
一切都按照我所希望的方式进行:管理员和插件管理员在访问、编辑和创建新的自定义帖子方面没有问题,
如果我没有将自定义帖子放在my-plugin
菜单当我这样做时,管理员仍然可以创建新的自定义帖子,但插件管理员可以做任何事情except 创建新的自定义帖子。相反,他们将得到Sorry, you are not allowed to access this page 错误有人知道为什么会这样吗?管理员拥有哪些插件管理员没有的权限?