Custom Post Type Capabilities

时间:2014-07-24 作者:vguerrero

我有一个自定义的帖子类型,我希望作者能够编辑其他帖子,但不能删除其他帖子。我的代码如下:

$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\', “我的”选项卡出现了,但作者用户仍然可以编辑其他帖子,这让我很困惑我真的不确定我是否以正确的方式使用了功能,或者我的意图是否可行。提前谢谢。

1 个回复
最合适的回答,由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 );

结束

相关推荐

PHP致命错误:无法为wp-includes/capabilities.php中的非对象调用重载函数

我在apache日志中遇到了太多以下错误。PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/capabilities.php on line 1187这是函数current\\u user\\u can($capability)的内部,第1187行如下所示:$current_user = wp_get_current_user(); 我不知道问题出在哪里?