我正在运行一个 WordPress 5.2.3 站点并且在管理面板中遇到问题。
我有一个自定义角色,我们称之为它librarian
,还有一个自定义帖子类型,我们称之为它book
。
我想让它librarian
可以编辑一个book
但不能创建一个新的。
按照另一个问题(WordPress:在自定义帖子类型上禁用“添加新”)和WordPress 文档中的建议,我最终得到了以下代码:
// Custom post type.
register_post_type('book',
array(
'labels' => array(
'name' => __( 'book' ),
'singular_name' => __( 'Book' )
),
'capability_type' => array('book', 'books'),
'capabilities' => array(
'create_posts' => 'do_not_allow' // <-- The important bit.
),
'map_meta_cap' => true,
'description' => 'Book full of pages',
'exclude_from_search' => true,
'publicly_queryable' => false,
'show_in_nav_menus' => false,
'show_ui' => true,
'show_in_menu' => true,
'show_in_rest' => true,
'menu_icon' => 'dashicons-location',
'menu_position' => 5,
'supports' => array('title', 'revisions')
));
// Custom role.
add_role('librarian', 'Librarian', array(
'read' => true,
'edit_books' => true,
'edit_published_books' => true
));
我期待当我访问时edit.php?post_type=book
,librariran
我会看到要编辑的列表books
,但我看不到“添加新”按钮。但是,我实际上得到的是403
回应:
抱歉,您无权访问此页面。
我认为这可能是 WordPress 中的一个错误,原因如下:
- 如果我以 .
edit.php?post_type=book
身份访问,那么我会根据需要看到没有添加新按钮administrator
的列表页面。 - 如果我为
librarian
角色赋予了能力,那么我会根据需要看到没有添加新edit_posts
按钮的列表页面(但我不想赋予他们能力!)。edit_posts
这些让我认为一般设置的自定义帖子类型不是问题。
- 如果我
'create_posts' => 'do_not_allow'
从book
类型注册中删除 ,则librarian
可以看到列表页面,但它包含Add New按钮。
这让我认为一般设置的自定义角色不是问题。
有没有人遇到过这个问题?我是否错过了配置中的任何内容?或者有没有简单的补丁或解决方法?
任何帮助,将不胜感激!谢谢。