无法编辑自定义帖子类型中的类别

时间:2020-02-07 作者:CaptainNemo

我使用以下代码创建了一个自定义帖子类型:

// Event Post type
register_post_type(\'event\', array(
  \'capability_type\' => \'event\',
  \'map_meta_cap\' => true,
  \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'revisions\'),
  \'rewrite\' => array(\'slug\' => \'events\'),
  \'has_archive\' => true,
  \'public\' => true,
  \'labels\' => array(
    \'name\' => \'Events\',
    \'add_new_item\' => \'Add new event\',
    \'new_item\' => \'New Event\',
    \'edit_item\' => \'Edit events\',
    \'all_items\' => \'All events\',
    \'singular_name\' => \'Event\'
  ),
  \'menu_icon\' => \'dashicons-calendar\',
  \'taxonomies\' => array( \'category\' )
));
我还有一个名为editor的成员角色,它可以获得所有功能(使用JustinTadlock的/Memberspress插件):

capabilities

但是,他不能更改新的或旧的事件帖子的类别。我发现了一个奇怪的解决方法,那就是在这个角色中添加“编辑帖子”的功能,这当然不是我希望他拥有的功能。

我很想了解这个问题的原因和解决方法。

2 个回复
SO网友:Vitauts Stočka

CPT功能不包括分类法。每个分类法都有自己的功能。如果您想使用默认类别,很遗憾,您必须为用户提供“编辑帖子”功能。解决这个问题没有简单的方法,尤其是古腾堡。最好的解决方案是创建具有匹配功能需求的自定义分类法“事件类别”,例如,将所有分类法上限映射到“edit\\u events”。

SO网友:user3135691

从我第一眼看到的情况来看,您缺少一个报价:

\'name\' => \'Events,
应为:

\'name\' => \'Events\',
此外,据我所知,您对自定义帖子类型的声明是不完整的(格式非常难看)。

尝试以下操作:

<?php

/* Register Custom Post Type \'events\' */
function prefix_register_custom_post_type(){

// Custom Post Type Name
$cpt_name = \'events\';
// CPT Features/possible values:
// \'title\', \'editor\', \'comments\', \'revisions\', \'trackbacks\', \'author\', \'excerpt\', \'page-attributes\', \'thumbnail\', \'custom-fields\', and \'post-formats\'
$cpt_features = array(
    \'title\',
    \'revisions\',
    \'thumbnail\',
    \'editor\'
);
// Slug
$cpt_slug = \'events\'; // What the URL will look like
$labels = array(
    \'name\'                      =>  __(\'Events\', \'text-domain\'),
    \'singular_name\'             =>  __(\'Event\', \'text-domain\'),
    \'menu_name\'                 =>  __(\'Events\', \'text-domain\'),
    \'name_admin_bar\'            =>  __(\'Events\', \'text-domain\'),
    \'all_items\'                 =>  __(\'All events\', \'text-domain\'), // Archive Page Name
    \'add_name\'                  =>  __(\'Add new event\', \'text-domain\'),
    \'add_new_item\'              =>  __(\'Add new event\', \'text-domain\'),
    \'edit\'                      =>  __(\'edit event\', \'text-domain\'),
    \'edit_item\'                 =>  __(\'edit event\', \'text-domain\'),
    \'new_item\'                  =>  __(\'New event\', \'text-domain\'),
    \'view\'                      =>  __(\'View event\', \'text-domain\'),
    \'view_item\'                 =>  __(\'View event\', \'text-domain\'),
    \'search_items\'              =>  __(\'Search \', \'text-domain\'),
    \'parent\'                    =>  __(\'Parent\', \'text-domain\'),
    \'not_found\'                 =>  __(\'No events found\', \'text-domain\'),
    \'not_found_in_trash\'        =>  __(\'No events found in Trash\', \'text-domain\')
);

/* ------------------------------------------ End of Edit */
$args = array(
    \'labels\'                =>  $labels,
    \'public\'                =>  true,
    \'publicly_queryable\'    =>  true,
    \'exclude_from_search\'   =>  false,
    \'show_in_nav_menus\'     =>  true,
    \'show_ui\'               =>  true,
    \'show_in_menu\'          =>  true,
    \'show_in_admin_bar\'     =>  true,
    \'menu_position\'         =>  21,
    \'menu_icon\'             =>  \'dashicons-awards\',
    \'can_export\'            =>  true,
    \'delete_with_user\'      =>  false,
    \'hierarchical\'          =>  true,
    \'has_archive\'           =>  true,
    \'query_var\'             =>  true,
    \'capability_type\'       =>  \'post\',
    \'map_meta_cap\'          =>  true,
    // \'capabilities\'       => array(),
    \'rewrite\'               =>  array(
        \'slug\'      => $cpt_slug,
        \'with_front\'=> true,
        \'pages\'     => true,
        \'feeds\'     => false
    ),
    \'supports\'      => $cpt_features
);

register_post_type($cpt_name, $args);

}
add_action(\'init\', \'prefix_register_custom_post_type\');
由于此格式更易于阅读,请检查或将代码替换为此格式,然后重试。此代码通常允许“编辑器”访问和操作已注册的自定义帖子类型。另请参阅已注释的“功能”数组,您可以在其中输入“edit\\u posts”之类的内容。

相关推荐

Categories manage

我正在尝试向CPT中添加特定类别,只有在添加新帖子时,您才能看到与这些帖子类型相关的类别。此外,我希望能够从后端添加类别,而不是从代码添加类别,因为我有很多类别将要更改。如果有一个插件可以做到这一点,那很好,但我也希望了解它是如何做到的。非常感谢