我有一个自定义的帖子类型,我希望作者能够编辑其他帖子,但不能删除其他帖子。我的代码如下:
$labels = array(
\'name\' => __( \'Book\', \'textdomain\' ),
\'singular_name\' => __( \'Book\', \'textdomain\' ),
\'menu_name\' => __( \'Books\', \'textdomain\' ),
\'add_new\' => __( \'New book\', \'textdomain\' ),
\'add_new_item\' => __( \'New book\', \'textdomain\' ),
\'edit_item\' => __( \'Edit book\', \'textdomain\' ),
);
$args = array(
\'labels\' => $labels,
\'public\' => true,
\'menu_position\' => 6,
\'menu_icon\' => \'dashicons-book\',
\'has_archive\' => true,
\'supports\' => array( \'title\', \'author\' ),
\'capabilities\' => array(
\'edit_post\' => \'edit_posts\',
\'read_post\' => \'edit_posts\',
\'delete_post\' => \'edit_posts\',
\'edit_posts\' => \'edit_posts\',
\'edit_others_posts\' => \'edit_posts\',
\'publish_posts\' => \'edit_posts\',
\'read_private_posts\' => \'edit_others_posts\',
\'delete_others_posts\' => \'edit_others_posts\',
),
);
register_post_type( \'book\', $args );
我对上述代码的感受是:
何时\'edit_others_posts\' => \'edit_posts\'
, 管理员帖子编辑器列表中的“我的”选项卡不显示,我希望它始终显示。有没有可能把它推回即使\'delete_others_posts\' => \'edit_others_posts\'
(作者用户没有“编辑\\u其他\\u帖子”的功能),作者可以删除其他帖子如果我用修改上述代码\'edit_others_posts\' => \'edit_others_posts\'
, “我的”选项卡出现了,但作者用户仍然可以编辑其他帖子,这让我很困惑我真的不确定我是否以正确的方式使用了功能,或者我的意图是否可行。提前谢谢。
最合适的回答,由SO网友:Welcher 整理而成
确定-让我们再试一次:)
我添加了map\\u meta\\u cap参数,这是delete\\u others\\u posts工作所必需的。现在我可以让作者编辑和查看所有帖子,但只能删除自己的帖子。
$labels = array(
\'name\' => __( \'Book\', \'textdomain\' ),
\'singular_name\' => __( \'Book\', \'textdomain\' ),
\'menu_name\' => __( \'Books\', \'textdomain\' ),
\'add_new\' => __( \'New book\', \'textdomain\' ),
\'add_new_item\' => __( \'New book\', \'textdomain\' ),
\'edit_item\' => __( \'Edit book\', \'textdomain\' ),
);
$args = array(
\'labels\' => $labels,
\'public\' => true,
\'menu_position\' => 6,
\'menu_icon\' => \'dashicons-book\',
\'has_archive\' => true,
\'supports\' => array( \'title\', \'author\' ),
\'map_meta_cap\' => true,
\'capabilities\' => array(
\'read_post\' => \'read_post\',
\'edit_post\' => \'edit_posts\',
\'edit_posts\' => \'edit_posts\',
\'edit_others_posts\' => \'edit_posts\',
\'delete_others_posts\' => \'install_plugins\',
)
);
register_post_type( \'book\', $args );