删除、编辑或添加自定义帖子类型的工具

时间:2012-08-24 作者:urok93

是否可以在admin中的帖子列表显示屏上删除特定帖子类型中对“编辑”或“添加”的所有引用?

因此,基本上我需要的是,对于这种帖子类型,定义的所有角色,无论它们是什么,都只能查看这些帖子的列表,除了丢弃它们之外,不能对它们做任何事情。因此,这意味着删除“添加新的myposttype”按钮,以及列表帖子屏幕每个条目下的“编辑|快速编辑”链接。

在我的自定义帖子类型中,以下是我的功能相关设置:

        \'capability_type\' => array(\'food_item\',\'food_items\'),
        \'map_meta_cap\'    => true,
        \'capabilities\' => array(
                        \'publish_posts\' => \'publish_food_items\',
                        \'edit_posts\' => \'edit_food_items\',
                        \'edit_others_posts\' => \'edit_others_food_items\',
                        \'delete_posts\' => \'delete_food_items\',
                        \'delete_others_posts\' => \'delete_others_food_items\',
                        \'read_private_posts\' => \'read_private_food_items\',
                        \'edit_post\' => \'edit_food_item\',
                        \'delete_post\' => \'delete_food_item\',
                        \'read_post\' => \'read_food_item\'
在我的plugin init函数中,我添加了以下内容:

    global $wp_roles;
    $wp_roles->add_cap( \'administrator\', \'edit_food_item\' );
    $wp_roles->add_cap( \'administrator\', \'edit_food_items\' );
此时,管理员根本看不到菜单中的食物条目。

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

对于“moomin”post类型,在定义自定义post类型时,将其“capability\\u type”指定为“moomin”。

这将为您提供“功能”edit\\u moomin等,然后您可以从各个角色中删除这些功能,例如:

global $wp_roles;
// remove capability edit_moomin from role editor
$wp_roles->remove_cap( \'editor\', \'edit_moomin\' );
@Simon Forster声称只读帖子是可能的,如果是这样的话,这应该可以做到:

$wp_roles->add_cap( \'editor\', \'read_moomin\' );

SO网友:Simon Forster

按要求。。。

add_action( \'init\', \'create_my_post_types\' );

function create_my_post_types() {
    register_post_type(
        \'name_of_your_post_type_singular\',
        array(
            \'public\' => true,
            \'capability_type\' => \'name_of_your_post_type_singular\'
            ),
        )
    );
}

add_action(\'admin_init\', \'give_user_read\', 10, 0);
function give_user_edit() {
    if(current_user_can(\'edit_others_posts\')) {
        global $wp_roles;
        $wp_roles->add_cap(\'author\',\'read_name_of_your_post_type_plural\' );
        $wp_roles->add_cap(\'editor\',\'read_name_of_your_post_type_plural\' );
                etc. etc.
    }
}
我已经为用户角色添加了读取功能。因为我没有给任何人编辑或删除。。他们不会接受的。因为我已经给了作者和编辑阅读权限,他们将拥有它。

如果您不确定这些功能是什么,当您添加上面的类型时,您将生成下面的功能

\'capabilities\' => array(
            \'publish_posts\' => \'publish_name_of_your_post_type_plural\',
            \'edit_posts\' => \'edit_name_of_your_post_type_plural\',
            \'edit_others_posts\' => \'edit_others_name_of_your_post_type_plural\',
            \'delete_posts\' => \'delete_name_of_your_post_type_plural\',
            \'delete_others_posts\' => \'delete_others_name_of_your_post_type_plural\',
            \'read_private_posts\' => \'read_private_name_of_your_post_type_plural\',
            \'edit_post\' => \'edit_name_of_your_post_type_singular\',
            \'delete_post\' => \'delete_name_of_your_post_type_singular\',
            \'read_post\' => \'read_name_of_your_post_type_singular\'
)

SO网友:tbwcf

您可以在管理区域的插件中使用一些css来删除它

在您的功能中。php文件链接到一些CSS(参考:http://codex.wordpress.org/Function_Reference/wp_enqueue_style)

add_action(\'admin_enqueue_scripts\', \'my_admin_script\');
function my_admin_script()
{
wp_register_style( \'myPluginStylesheet\', plugins_url(\'stylesheet.css\', __FILE__) );
}
CSS:

a[href="post-new.php?post_type=events"],
#adminmenu a[href="edit.php?post_type=events"],
#adminmenu a.editinline,
#adminmenu a[title="Edit this item"] {
display:none;
opacity:0;
}
在CSS中,您需要将对“事件”的引用替换为自定义帖子类型的名称。我相信,使用这些选择器,IE7+会起作用。

结束

相关推荐