如何在WordPress中将类别添加到自定义帖子类型

最近我们的一个用户问我们是否可以添加类别到自己创建的自定义文章类型。 分类是WordPress中的内置分类法之一。 默认情况下,他们只显示帖子。 但是,在某些情况下,您可能也希望与自定义帖子类型分享。 在本文中,我们将向您展示如何将类添加到WordPress中的自定义帖子类型。 我们还将向您展示如何在您的类别归档页面上显示多个帖子类型。

将类别添加到自定义帖子类型

插件方法

对于初学者级用户,我们建议使用自定义帖子类型UI插件来创建自定义帖子类型。 使用自定义帖子类型UI插件时,您可以选择将自定义帖子类型与任何内置或自定义分类法(包括类别)相关联。

首先,您需要安装并激活Custom Post Type UI插件。 更多细节

安装后,您需要访问 CPT用户界面»添加/编辑帖子类型 创建新的自定义帖子类型或编辑您使用插件创建的现有自定义帖子类型。

使用CPT UI插件编辑帖子类型

向下滚动高级选项到底部,在那里你会看到 建立在taxonomies 选项。 选中类别旁边的复选框并保存您的自定义文章类型。

在WordPress中为自定义帖子类型启用类别

不要忘记点击保存帖子类型按钮来存储您的设置。

手动将类别添加到自定义帖子类型

如果通过在主题的functions.php文件或特定于站点的插件中添加代码来创建自定义帖子类型,则必须修改代码以将类别添加为受支持的分类。

您只需在CPT的参数中添加此行即可。

'taxonomyies'=> array('category'), 

您可能已经在CPT的现有代码中加入了其他一些自定义分类标准。 如果你这样做,那么你只需要添加一个逗号,然后添加类别,如下所示:

'taxonomies'=> array('topics','category'), 

这是一个完整的示例代码,我们创建了一个自定义的帖子类型,称为电影,支持内置类别。

函数custom_post_type(){

 //为自定义帖子类型设置UI标签
 $ labels = array(
 'name'=> _x('Movies','Post Type General Name','twentythirteen'),
 'singular_name'=> _x('Movie','Post Type Singular Name','twentytheen'),
 'menu_name'=> __('Movies','twentytheeneen'),
 'parent_item_colon'=> __('Parent Movie','twentytheeneen'),
 'all_items'=> __(“所有电影”,“二十三”),
 'view_item'=> __('观看电影','二十十三'),
 'add_new_item'=> __('Add New Movie','twentytheeneen'),
 'add_new'=> __('Add New','twentytheeneen'),
 'edit_item'=> __('编辑电影','twentytheeneen'),
 'update_item'=> __('更新电影','twentytheeneen'),
 'search_items'=> __('搜索电影','twentytheeneen'),
 'not_found'=> __('Not Found','twentytheen'),
 'not_found_in_trash'=> __('垃圾箱里找不到','二十十三'),
 );

 //为自定义帖子类型设置其他选项

 $ args = array(
 'label'=> __('movies','twentytheen'),
 'description'=> __('电影新闻和评论','twentytheen'),
 'labels'=> $ labels,
 'supports'=> array('title','editor','excerpt','author','thumbnail','comments','revisions','custom-fields'),
 'hierarchical'=> false,
 'public'=> true,
 'show_ui'=> true,
 'show_in_menu'=> true,
 'show_in_nav_menus'=> true,
 'show_in_admin_bar'=> true,
 'menu_position'=> 5,
 'can_export'=> true,
 'has_archive'=> true,
 'exclude_from_search'=> false,
 'public_queryable'=> true,
 'capability_type'=>'页面',

 //这是我们将分类法添加到CPT的地方
 'taxonomyies'=> array('category'),
 );

 //注册您的自定义帖子类型
 register_post_type('movies',$ args);

 }

 / *挂钩到'init'的行动,使该功能
 *包含我们的帖子类型注册不是
 *不必要的执行。
 * /

 add_action('init','custom_post_type',0); 

在类别页面上显示多个帖子类型

默认情况下,您的WordPress网站上的类别页面将只显示默认的“帖子”的帖子类型。 要将您的自定义帖子类型显示在默认帖子所在的同一类别页面上,您需要将此代码添加到您的主题的functions.php或特定于站点的插件中。

add_filter('pre_get_posts','query_post_type');
 函数query_post_type($ query){
   if(is_category()){
     $ post_type = get_query_var('post_type');
     如果($ post_type)
         $ post_type = $ post_type;
     其他
         $ post_type = array('nav_menu_item','post','movies');  //不要忘记nav_menu_item允许菜单工作!
     $查询 - >置( 'post_type',$ post_type);
     返回$查询;
     }
 } 

不要忘记用自己的自定义帖子类型的名称替换电影。

就是这样,我们希望这篇文章能够帮助您在WordPress中为自定义文章类型添加类别。 您也可以使用相同的方法将标签添加到自定义帖子类型中。