我尝试设置一个自定义角色,该角色只能创建特定自定义帖子类型的帖子。这个自定义角色应该只能创建一个帖子,但不能发布它。发布将由管理员完成。帖子发布后,自定义角色应该无法再次编辑帖子。
当尝试使用普通帖子(不是自定义帖子类型)实现上述目标时,它可以正常工作。我可以使用:
add_role('custom_role', 'My Custom Role', array(
'read' => true,
'edit_posts' => true,
'edit_published_posts' => false,
));
但是,当尝试使用自定义帖子类型归档上述内容时,我最终会得到 2 个结果,具体取决于权限的设置方式:
- 我也可以在帖子发布后创建和编辑帖子或
- 我一开始就无法创建帖子。
到目前为止,我为实现这一目标所做的努力:
function my_custom_post_type(){
$args = array(
'labels' => array(
'name' => 'my_custom_post_type',
),
'hierarchical' => false,
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-images-alt2',
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields', 'author'),
'capabilities' => array(
'read_posts' => 'read_my_custom_post_type',
'edit_posts' => 'edit_my_custom_post_type',
'publish_posts' => 'publish_my_custom_post_type',
));
register_post_type('my_custom_post_type', $args);
}
add_action('init', 'my_custom_post_type');
#################
add_role('custom_role', 'custom_role');
#################
function add_role_caps()
{
$role = get_role('custom_role');
$role->add_cap('read_my_custom_post_type', true);
$role->add_cap('edit_my_custom_post_type', true);
$role->add_cap('publish_my_custom_post_type', false);
}
add_action('admin_init', 'add_role_caps', 999);
我还发现了一个 WP-Plugin 的页面,其中指出“edit_published_posts”功能“仅适用于“帖子”帖子类型。 https://publishpress.com/knowledge-base/edit_published_posts/
在进一步研究该声明时,我无法找到该声明的任何其他来源。