
您现在的位置是:首页 > WordPress教程WordPress教程
如何创建WordPress自定义分类法?
WP集市
2025-08-21
【WordPress教程】
700人已围观
要说WordPress这玩意儿,默认的“分类”和“标签”确实够用,但架不住咱们做站需求五花八门啊!比如你搞个电商站,想给产品分“品牌”“材质”“价位”;或者做个电影站,想按“导演”“类型”“上映年份”归类——这时候默认分类就不够用了,得整“自定义分类法”!说白了就是自己造个分类体系,想咋分咋分。今天咱就唠唠咋弄,代码都给你写好,复制粘贴就能跑,小白也能看懂!
第一步:先搞懂“自定义分类法”是个啥?
你想啊,默认分类(category)是层级的(比如“手机”下有“苹果”“华为”),标签(tag)是非层级的(随便打,没父子关系)。自定义分类法呢?就是你自己定义一个“分类类型”,比如叫“brand”(品牌),它可以是层级的(支持子分类),也可以是标签式的(不支持子分类),全看你需求。
第二步:开干!用代码注册分类法
WordPress有个现成的函数叫register_taxonomy
,专门干这个的。直接往主题的functions.php
里怼代码就行(别慌,复制我的,改改名字就成)。
举个栗子:给“产品”(假设你已经注册了product
这个文章类型)加个“品牌”分类法,层级式的(支持子品牌)。代码长这样:
// 注册“品牌”自定义分类法
function custom_taxonomy_brand() {
$labels = array(
'name' => '品牌', // 分类法名称(复数)
'singular_name' => '品牌', // 分类法名称(单数)
'search_items' => '搜索品牌',
'all_items' => '所有品牌',
'parent_item' => '父品牌', // 层级分类才有这个
'parent_item_colon' => '父品牌:',
'edit_item' => '编辑品牌',
'update_item' => '更新品牌',
'add_new_item' => '添加新品牌',
'new_item_name' => '新品牌名称',
'menu_name' => '品牌', // 后台菜单显示名称
);
$args = array(
'labels' => $labels, // 上面的标签配置
'hierarchical' => true, // true=层级分类(像category),false=标签式(像tag)
'public' => true, // 是否公开(前台可见、后台显示)
'show_ui' => true, // 显示管理界面
'show_admin_column' => true, // 在文章列表页显示该分类法列
'query_var' => true, // 允许通过query_var查询
'rewrite' => array( 'slug' => 'brand' ), // URL别名,比如/brand/apple/
);
// 注册分类法:分类法名称(内部用,小写英文)、关联的文章类型、配置参数
register_taxonomy( 'brand', array( 'product' ), $args );
}
// 钩子:在初始化时执行
add_action( 'init', 'custom_taxonomy_brand', 0 );
重点参数解释:看不懂?记这几个就行!
hierarchical
:核心中的核心!true
就是层级分类(能选“父品牌”),false
就是标签式(多选,没层级)。比如“材质”分类法,你想让用户选“棉”“麻”“涤纶”(可多选),就把这个设为false
。rewrite
:URL里的别名,比如slug => 'brand'
,那苹果品牌的页面就是你的域名/brand/apple/
,好记!labels
:全是后台显示的文字,比如“添加新品牌”,不改也行,但改了更符合中文习惯,用户体验好点。
第三步:让分类法在后台显示出来
代码怼进去后,去后台看看——“产品”菜单下是不是多了个“品牌”?能添加、编辑品牌了吧?如果没显示,两种可能:
- 你关联的文章类型不对:上面代码里
register_taxonomy
第二个参数是array( 'product' )
,得确保product
这个文章类型存在(如果没注册,先注册文章类型,回头我再写篇文章唠这个)。 - 忘了刷新固定链接:去“设置→固定链接”,啥也不用改,点一下“保存更改”,刷新下规则,不然可能打不开品牌页面(404)。对了,这个操作很重要,每次改分类法URL都得刷!
第四步:在文章编辑页添加分类法
有时候注册了分类法,但在文章编辑页(比如“添加产品”页面)看不到?别急,两种办法补一下:
-
办法1:注册文章类型时直接关联。比如注册
product
时,在register_post_type
的taxonomies
参数里加上'brand'
:register_post_type( 'product', array( // ...其他参数... 'taxonomies' => array( 'brand' ), // 直接关联分类法 ) );
-
办法2:用函数手动关联。如果文章类型已经注册了,就用
register_taxonomy_for_object_type
:// 给product文章类型关联brand分类法 register_taxonomy_for_object_type( 'brand', 'product' );
这下编辑产品时,右侧就能看到“品牌”分类框了,跟默认分类用法一样,选就行!
第五步:前端咋显示分类法内容?
搞了半天,总得在页面上显示出来吧?比如产品详情页显示“品牌:苹果”,或者品牌归档页显示所有苹果产品。
1. 单个文章显示分类法术语(比如“品牌”)
在文章模板(比如single-product.php
)里加代码,用the_terms
函数直接输出:
<?php if ( has_term( '', 'brand', get_the_ID() ) ) : ?>
<div class="412d-f110-7933-668d product-brand">
<?php the_terms( get_the_ID(), 'brand', '品牌:', ', ', '' ); ?>
</div>
<?php endif; ?>
解释下:get_the_ID()
是当前文章ID,'brand'
是分类法名称,'品牌:'
是前缀,,
是多个术语的分隔符。效果就是“品牌:苹果”。
2. 分类法归档页(比如/brand/apple/
)
想让品牌页面显示该品牌下的所有产品?WordPress会自动用taxonomy-[分类法名称].php
模板,比如taxonomy-brand.php
。在这个模板里,跟archive.php一样用循环就行:
<?php get_header(); ?>
<h1><?php single_term_title(); ?>品牌产品</h1>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php endwhile; endif; ?>
<?php get_footer(); ?>
single_term_title()
会显示当前品牌名称,比如“苹果品牌产品”,妥妥的!
最后叨叨两句
自定义分类法这东西,灵活得很!想加多少加多少,“材质”“颜色”“地区”……只要你能想到的分类维度,都能整出来。记住核心就是register_taxonomy
函数,参数照着改,代码复制过去,刷新下固定链接,齐活!
刚开始可能觉得绕,没事,多试两次就熟了。有啥问题评论区问,我看到就回!总之,别被“自定义”三个字吓跑,WordPress这玩意儿,上手了就知道,真不难!
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

热门文章
