可以编辑自定义帖子,但无法在子菜单中创建新的自定义帖子。缺少什么功能?

时间:2018-08-12 作者:John Doe

我在我的一个插件中使用的自定义帖子遇到了有趣的行为。以下是自定义帖子的参数:

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 错误

有人知道为什么会这样吗?管理员拥有哪些插件管理员没有的权限?

1 个回复
SO网友:John Doe

我无法用用户角色编辑器找到这个问题的答案,但我已经解决了这个问题,为不同的用户显示了不同的管理面板。插件管理员登录时,自定义帖子类型不会放在菜单下,因此他们可以创建新的自定义帖子。管理员登录时,自定义帖子类型将置于菜单下。

结束

相关推荐

About Wordpress capabilities

我知道WordPress是博客引擎的最佳选择,通过一些插件,如Advance Custom Field,WP可以成为一个很棒的CMS。但它仍然有利于出版商将内容推送给用户。现在我的处境相当严峻。我的朋友想使用WP作为一个引擎,用户可以贡献他们的帖子,其他人可以查看它。是否可以使用WP我可以创建自定义主题(&a);插件可以做到这一点,但当用户在插件上放置很多东西(页面和帖子)时,它对性能有好处吗?