
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress自定义分类法?别懵!手把手教你搞明白
WP集市
2025-08-21
【WordPress教程】
392人已围观
话说回来,用WordPress建站的同学,是不是总觉得自带的“分类”和“标签”不够用?比如你想做个电影网站,想按“类型”“地区”“年代”给电影分类,自带的分类只能搞一个维度,标签又太散——这时候就得靠“自定义分类法”了。这玩意儿说白了就是让你自己造个“分类规则”,想怎么分就怎么分,灵活得很。今天咱就从零开始,用代码手把手教你整明白,别怕,都是白话文,程序员也能聊家常不是?
先搞懂:分类法到底是个啥?
你猜怎么着?WordPress里的“分类”(Categories)和“标签”(Tags)其实都是“分类法”的一种。分类是“层级分类法”(有父子关系,比如“科技>手机>苹果”),标签是“非层级分类法”(平级,没父子,想到啥贴啥)。自定义分类法,就是让你自己定义新的分类规则——可以是层级的,也可以是非层级的;可以关联到默认文章,也可以关联到你自己造的“自定义文章类型”(比如“产品”“课程”)。
为啥要自定义分类法?举个栗子!
假设你要做个“宠物网站”,发文章写狗狗、猫咪、兔子。自带分类只能分“狗狗”“猫咪”“兔子”,但你还想按“体型”(小型、中型、大型)和“性格”(温顺、活泼、高冷)分——这时候就需要两个自定义分类法:“宠物体型”和“宠物性格”。这样用户就能按“狗狗+大型+温顺”筛选内容,体验直接拉满,SEO也更友好,对吧?
开干!用代码注册自定义分类法
别急,一步一步来。 WordPress注册分类法靠 register_taxonomy()
这个函数,一般写在主题的 functions.php
里(别直接改核心文件,用子主题!不然更新主题白干)。咱先从最简单的开始:给默认文章(post)加个“电影类型”分类法(层级的,类似默认分类)。
基础版代码:给文章加“电影类型”分类法
// 在主题的functions.php里加这段代码
function wpdocs_create_movie_taxonomy() {
$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=层级分类(像默认分类),false=非层级(像标签)
'public' => true, // 是否公开,前台能不能看
'show_ui' => true, // 后台要不要显示管理界面
'show_admin_column' => true, // 文章列表页要不要显示这列
'query_var' => true, // 能不能用query_var查询(比如?movie_type=喜剧)
'rewrite' => array( 'slug' => 'movie-type' ), // URL别名,比如/movie-type/喜剧
);
// 注册分类法:分类法名称(movie_type)、关联的文章类型(post)、参数
register_taxonomy( 'movie_type', array( 'post' ), $args );
}
// 钩子:在初始化时执行注册
add_action( 'init', 'wpdocs_create_movie_taxonomy', 0 );
保存代码后,去后台看看!
代码贴完保存,去WordPress后台刷新一下——文章菜单下面是不是多了个“电影类型”?点进去就能添加“喜剧”“动作”“科幻”这些“术语”(分类法里的选项叫“术语”,Term),和默认分类用法一模一样!写文章的时候,右边也会出现“电影类型”的框,勾选或添加就行,简单吧?
进阶:自定义文章类型+自定义分类法
光给默认文章加不够玩,咱再整复杂点:造个“书籍”自定义文章类型,再配两个分类法“书籍分类”(层级,比如“小说>科幻小说”)和“作者”(非层级,像标签但更规范)。
先注册“书籍”自定义文章类型(代码)
// 注册“书籍”自定义文章类型
function wpdocs_create_book_post_type() {
$labels = array(
'name' => '书籍',
'singular_name' => '书籍',
'add_new' => '添加新书',
'add_new_item' => '添加新书',
'edit_item' => '编辑书籍',
'new_item' => '新书',
'view_item' => '查看书籍',
'search_items' => '搜索书籍',
'not_found' => '没找到书籍',
'not_found_in_trash' => '回收站没书籍',
'menu_name' => '书籍',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true, // 有没有归档页(/books/)
'supports' => array( 'title', 'editor', 'thumbnail' ), // 支持标题、编辑器、缩略图
'menu_icon' => 'dashicons-book', // 菜单图标(用Dashicons)
);
register_post_type( 'book', $args ); // 文章类型名称(book)、参数
}
add_action( 'init', 'wpdocs_create_book_post_type' );
再给“书籍”注册两个分类法
// 书籍分类(层级)
function wpdocs_create_book_category_taxonomy() {
$labels = array( 'name' => '书籍分类', 'singular_name' => '书籍分类', ... ); // 标签和上面类似,省略
$args = array(
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'rewrite' => array( 'slug' => 'book-category' ),
);
// 关联到'book'文章类型
register_taxonomy( 'book_category', array( 'book' ), $args );
}
add_action( 'init', 'wpdocs_create_book_category_taxonomy' );
// 作者(非层级,类似标签)
function wpdocs_create_author_taxonomy() {
$labels = array( 'name' => '作者', 'singular_name' => '作者', ... );
$args = array(
'hierarchical' => false, // 非层级,像标签
'public' => true,
'show_ui' => true,
'rewrite' => array( 'slug' => 'author' ),
);
register_taxonomy( 'author', array( 'book' ), $args );
}
add_action( 'init', 'wpdocs_create_author_taxonomy' );
前端怎么显示?模板里加代码!
分类法建好了,得在前台显示出来才算完事。比如在“书籍”文章详情页(single-book.php
)显示分类和作者,用 the_terms()
函数就行:
// 在single-book.php里加这段
<div class="0ebf-ff83-74d4-edb0 book-meta">
<p>分类:<?php the_terms( get_the_ID(), 'book_category', '', ', ', '' ); ?></p>
<p>作者:<?php the_terms( get_the_ID(), 'author', '', ', ', '' ); ?></p>
</div>
刷新页面,就能看到类似“分类:小说, 科幻小说”“作者:刘慈欣, 郝景芳”的显示了——齐活!
最后叨叨两句
自定义分类法这东西,你用熟了就知道,比标签灵活,比自定义字段规范,尤其适合内容维度多的网站。怕代码麻烦?也可以用插件(比如Custom Post Type UI)点点鼠标生成,但咱程序员嘛,自己写代码心里踏实,想咋改咋改,对吧?
记住,注册的时候 hierarchical
参数别瞎填,层级和非层级用法差远了;关联文章类型别漏了,不然分类法没地方用;URL别名(rewrite)最好设置一下,SEO友好。有问题多看官方文档,那玩意儿比我讲的细多了。
行了,今天就到这儿,赶紧找个测试站试试,搞个“美食”分类法+“菜谱”文章类型,香得很!
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

相关文章
- WordPress文章排序?这几招让你想咋排就咋排!
- WordPress用户注册咋整?手把手教你从0到1搞定设置,代码都给你抄好了!
- WordPress密码忘了?别慌!程序员教你3招5分钟搞定
- WordPress自动保存太烦人?老司机教你三招禁用秘籍
- 从零上手WordPress Gutenberg:别再用老编辑器啦,这才是2024年的正确打开方式!
- WordPress经典编辑器没了?别急,这几招直接给它拽回来!
- 手把手教你搞懂WordPress主题翻译!本地化成中文就这么简单
- 手把手教你给WordPress绑域名!别再让网站裸奔了喂
- WordPress主机怎么选?程序员掏心窝子指南
- WordPress缓存插件咋配?看完这篇,网站嗖嗖快!
热门文章
