如何删除非管理员用户在仪表板中显示的自定义帖子类型?
/* Add Websites Custom Post Type */
add_action( \'init\', \'create_website_type\' );
function create_website_type() {
register_post_type( \'website\',
array(
\'labels\' => array(
\'name\' => __( \'Websites\' ),
\'singular_name\' => __( \'Website\' ),
\'add_new\' => __( \'Add New Website\' ),
\'add_new_item\' => __( \'Add New Website\' ),
\'edit\' => __( \'Edit Website\' ),
\'edit_item\' => __( \'Edit Website\' ),
\'new_item\' => __( \'Add New Website\' ),
\'view\' => __( \'View Website\' ),
\'view_item\' => __( \'View Website\' ),
\'search_items\' => __( \'Search Websites\' ),
\'not_found\' => __( \'No Websites Found\' ),
\'not_found_in_trash\' => __( \'No Websites found in Trash\' ),
),
\'description\' => __(\'Websites to be shown in Resources section.\'),
\'public\' => true,
\'show_ui\' => true,
\'publicly_queryable\' => true,
\'exclude_from_search\' => false,
\'menu_position\' => 20,
\'supports\' => array(\'title\', \'editor\'),
\'can_export\' => true
)
);
remove_post_type_support(\'website\',\'editor\');
}
最合适的回答,由SO网友:fuxia 整理而成
register_post_type()
接受参数capabilities
在其论点中。看见get_post_type_capabilities()
获取可能的值。从评论中:
默认情况下,七个键被接受为功能阵列的一部分:
edit_post
, read_post
, 和delete_post
是元功能,通常根据上下文映射到相应的基本功能,即正在编辑/读取/删除的帖子和正在检查的用户或角色。因此,这些功能通常不会直接授予用户或角色。edit_posts
- 控制是否可以编辑此帖子类型的对象。edit_others_posts
- 控制是否可以编辑其他用户拥有的此类型的对象。如果帖子类型不支持作者,则其行为如下edit_posts
.publish_posts
- 控制此帖子类型的发布对象read_private_posts
- 控制是否可以读取私有对象
这四种基本功能在不同位置的core中进行了检查。还有其他七种基本功能在core中没有直接引用,除了
map_meta_cap()
, 它将上述三个元功能转换为一个或多个基本功能,然后必须根据上下文对照用户或角色进行检查。
read
- 控制是否可以读取此帖子类型的对象delete_posts
- 控制是否可以删除此帖子类型的对象delete_private_posts
- 控制是否可以删除私有对象delete_published_posts
- 控制是否可以删除已发布的对象delete_others_posts
- 控制是否可以删除其他用户拥有的对象。如果帖子类型不支持作者,则其行为如下delete_posts
.edit_private_posts
- 控制是否可以编辑专用对象edit_published_posts
- 控制是否可以编辑已发布的对象
这些附加功能仅用于
map_meta_cap()
. 因此,只有在post类型注册到
\'map_meta_cap\'
参数设置为
true
(默认值为
false
).
在注册参数中添加:
\'capabilities\' => array(
\'edit_post\' => \'update_core\',
\'read_post\' => \'update_core\',
\'delete_post\' => \'update_core\',
\'edit_posts\' => \'update_core\',
\'edit_others_posts\' => \'update_core\',
\'delete_posts\' => \'update_core\',
\'publish_posts\' => \'update_core\',
\'read_private_posts\' => \'update_core\'
),