信科网络 · 11 年只做 WordPress | 建站 / 主题 / 插件 / 商城 / 迁移 / 托管 | 累计服务 3000+ 企业 | 源码全交付
服务热线:13280692153 邮箱:web@wordpressx.com
工作日 08:30-18:0013280692153 免费诊断
首页/WordPress 教程/WordPress 分类目录体系:父子结构、未分类与批量整理
BLOG

WordPress 分类目录体系:父子结构、未分类与批量整理

分类 发布 2026-10-19

先给判断:一篇文章只进一个分类,可以挂多个标签。这句话听着像老生常谈,但大部分中文 WordPress 站点的目录混乱,都是从没守住这条线开始的——该进分类的进了标签,该做层级的地方摊平成几十个平级分类,最后导航栏塞不下,只能靠搜索框兜底。

分类和标签的本质区别

WordPress 后台的文章编辑页右侧有两个框,上面是分类目录,下面是标签。它们在数据库里都存进 wp_terms、wp_term_taxonomy、wp_term_relationships 三张表,结构几乎一样,差别在于语义约束:分类是树,标签是集合。

分类有 parent 字段,能形成父子关系,所以它适合表达「栏目」——读者顺着导航一层层点下去,能穷举出站点所有内容。标签没有层级,它是横切的,适合表达「主题词」,比如 WooCommerce、Nginx、备案,一篇文章可以同时属于这三个词。

维度 分类目录 标签
数量关系 一篇一个主分类 一篇可挂多个
层级 支持父子,wp_terms 里存 parent 不支持层级
地址结构 /category/父/子/ /tag/别名/
主要用途 栏目导航、面包屑、落地页 相关内容、主题聚合
是否进主导航 应该进 一般不进

实际判断标准很简单:如果这个词你会想让它出现在顶部导航,它是分类;如果只是想让读者看完这篇能顺手点开同类文章,它是标签。两者都要控制总量,分类超过 30 个、标签超过 200 个,就该停下来重新规划了。

后台允许一篇文章勾选多个分类,技术上没问题,但一旦这么做,分类页的文章数会互相重叠,读者也没法判断「这篇文章到底属于哪个栏目」。如果确实有跨栏目需求,正确做法是选一个主分类,另外那个用标签补,或者在模板里用「相关文章」模块手动关联。这条纪律在多人协作的站点尤其重要,因为它直接决定后台列表能不能按栏目筛出干净的结果。

父子分类最多做几层

WordPress 本身不限层数,wp_terms 的 parent 是自引用字段,你想建十层它也存得下。但可用性上,超过三层就没意义了:移动端导航展开困难,面包屑会挤成一行,搜索引擎的抓取深度也变差。

给客户做改版时通常按「两层为主、三层封顶」规划,例如:

  • 技术资料(一级) → WordPress 建站(二级) → 安全加固(三级)
  • 案例(一级) → 制造业(二级)

如果某个分支确实需要第四层,说明这一层应该拆成独立栏目,而不是继续往树里挂。

还有一个容易忽略的点:子分类的文章不会自动出现在父分类页。后台「文章 → 分类」里,父分类那一行的计数不含子分类文章。想让父分类页把子分类内容一起列出来,得用 pre_get_posts 改主查询,或者在模板里自己拼参数:

add_action( 'pre_get_posts', function( $q ) {
    if ( is_admin() || ! $q->is_main_query() || ! $q->is_category() ) {
        return;
    }
    $cat   = get_queried_object();
    $ids   = get_term_children( $cat->term_id, 'category' );
    $ids[] = $cat->term_id;
    $q->set( 'category__in', $ids );
} );

get_term_children 返回的是 term_id 数组,category__in 接受的也正是 term_id,两者别和 slug 混用,混了会静默返回空列表。

未分类:删不掉,但可以驯服

「未分类」是安装时自动创建的,term_id 固定为 1,后台不允许删除。很多站把它当历史遗留不管,结果没选分类的文章全堆在这里,最后变成几百篇的大杂烩,分类页第一页全是杂项。

正确处理分三步。

  1. 改默认分类。进入「设置 → 写作 → 默认文章分类」,指向一个真实栏目,例如「资讯」。这样以后新文章漏选分类也至少落在合理位置。
  2. 改名字和别名。确实要保留兜底位,就把它改名成「其他」,别名改成 others,界面上比 Uncategorized 体面。改名不影响已有链接,改别名才需要配 301。
  3. 清空存量。用「文章 → 所有文章」按分类筛选,勾选后「批量操作 → 编辑 → 应用」一次性改到目标分类。数量过千时后台会超时,改用 SQL 或 WP-CLI。
-- 把未分类文章挂到 term_id = 12 的分类
INSERT OR IGNORE  INTO wp_term_relationships (object_id, term_taxonomy_id, term_order)
SELECT p.ID, 12, 0 FROM wp_posts p
JOIN wp_term_relationships tr
  ON tr.object_id = p.ID AND tr.term_taxonomy_id = 1
WHERE p.post_type = 'post' AND p.post_status = 'publish';

DELETE tr FROM wp_term_relationships tr
WHERE tr.term_taxonomy_id = 1;

执行前先 mysqldump 导出这两张表。term_taxonomy_id 和 term_id 在默认安装下数值相同,但如果你手动改过数据,务必先 select 确认,写错了会把文章挂到别的栏目上。

批量导入和批量改名

改版迁移时最常见的活,是把一个表格里的几百个栏目名变成分类树。三种做法各有边界:

做法 适用规模 代价
后台逐个新建 10 个以内 慢,但不会出错
CSV 导入插件 数百到数万 要配字段映射,导入后重建缩略图
WP-CLI 脚本 任意 要会写脚本,可重复执行

WP-CLI 最稳,因为可以写成文件反复跑:

wp term create category "安全加固" --parent=15 --slug=anquan-jiagu
wp term list category --fields=term_id,name,slug,parent,count

批量改名用 wp term update category 加 ID 和 –name 参数。改名前先导一份对照表,改完再导一次做 diff,比肉眼核对靠得住。中文分类名改成英文别名后,后台列表里两者的对应关系容易忘,对照表要留在项目文档里。

另一个高频需求是合并重复分类。后台没有合并功能,只能先迁文章再删空分类:

# 把 old-slug 下的文章全部转到 new-slug
wp post list --category_name=old-slug --field=ID --format=ids 
  | xargs -r wp post term set {} category new-slug --by=slug

# 确认计数为 0 后删除
wp term delete category $(wp term get category old-slug --field=term_id)

分类页 URL 和描述对 SEO 的价值

默认分类页地址是 /category/技术资料/,中文会被 urlencode 成 /category/%e6%8a%80%e6%9c%af%e8%b5%84%e6%96%99/。虽然能访问,但分享出去很难看,日志里也难读。两条路:给每个分类填英文别名,或者在「设置 → 固定链接」里换掉分类前缀。改前缀会改变全部分类页地址,上线前必须做好 301,具体做法见 固定链接设置。

分类描述(后台分类编辑页的「描述」框)默认多数主题不显示,但它是分类页唯一能写正文的地方。填 80 到 150 字,说明这个栏目收录什么、怎么组织,比留空更有意义。部分 SEO 插件会把它输出到分类页顶部,配合 canonical 使用,效果比在内链里堆关键词好得多,完整思路在 WordPress SEO 优化 里有展开。

还有两个开关值得设置:分类页分页之后(第 2 页起)建议 noindex、follow;空分类要么删掉,要么 noindex。空分类返回 200 但没有任何内容,属于典型的低质量页,留着只是让爬虫多跑一趟。

列表密度也该顺手调一下。「设置 → 阅读 → 博客页面至多显示」控制的是全站列表条数,默认 10 条,对技术类长文偏少。分类页每页 12 到 20 条比较合适:太少会让分页数量暴增,产生大量 /page/8/ 这种薄页;太多则单页体积过大,移动端首屏要等很久。改完记得在主题里确认分页函数用的是全局 $wp_query,不是自己另起一个 query,否则条数设置不生效。

建议的整理顺序

  1. 导出全站分类:wp term list category –fields=term_id,name,slug,parent,count > cats.csv
  2. 标出 count 为 0 的分类,确认无用后删除。
  3. 标出名称近似的(教程、WordPress 教程、wp 教程),合并到一个,其余做 301。
  4. 确定两层骨架,把平级分类挂到父级下。
  5. 处理未分类存量,并把默认分类指向真实栏目。
  6. 给每个保留的分类填别名和描述。
  7. 检查导航菜单,一级栏目控制在 6 到 8 个。

整理完刷新一次固定链接(「设置 → 固定链接」直接点保存即可),清掉缓存插件和 CDN 的分类页缓存,再顺着 全站目录 走一遍,确认每个分类都能点进去、每篇文章都有归属、没有孤立的空栏目。这套流程在 网站改版 项目里基本是标准动作,因为它一次解决导航、内链和收录三件事。

INDUSTRIAL BELT

扎根中国制造产业带
懂工厂,才懂出海

从胶东半岛到珠三角,从长三角到中原腹地,每一片产业集群都有自己的出口节奏与买家画像。信科网络长期扎根产业一线,把工厂的产品语言翻译成海外采购商听得懂的搜索语言,让每一分投入都对着真实的询盘去。

xingqing

兴庆外贸网站建设

金凤区于2002年11月1日成立,是宁夏回族自治区首府银川市的市辖区之一,位于市区中部,东到唐徕渠,西到包兰铁路,南接永宁县,北临贺兰县,辖良田、丰登2个镇,上海西路、北京中路、长城中路…

kaizhou

开州外贸网站建设

开州区隶属于重庆市,位于重庆市东北部,三峡库区小江支流回水末端,介于北纬30°49′30″-31°41′30″、东经107°55′48″-108°54′之间,西邻四川省开江县,北依大巴山接城口县和四川省宣汉县,东毗云…

wuxi

巫溪外贸建站

巫溪县地处大巴山东段南麓的渝、陕、鄂三省(市)结合部分,东接湖北省神农架林区、竹溪县,南临重庆市奉节、巫山两县,西与重庆开县、云阳接壤,北连重庆城口县和陕西省镇坪县。  

lulong

卢龙外贸建站

卢龙县地处河北省东北部、隶属于秦皇岛市,总面积961平方公里,全县辖12个乡镇、548个行政村,总人口41.5万人,其中农业人口38万人。卢龙,历史悠久,人杰地灵。1988年,卢龙县被确定为全国对…

tongnan

潼南WordPress建站

潼南县位于重庆市西北部最前沿。是川渝握手区腹地东西南北交通自然便捷走向的交汇点及区域几何中心,是成渝经济区的腹地中心,是重庆西部凸入川中腹地最远、毗邻四川县市最多的对外开放最前沿…

rongcheng

容城WordPress建站

河北省容城县,历史悠久,距今已有2000年的历史,全县总面积314平方公里,总人口25万人。地理位置得天独厚。位于河北省中部,京、津、保腹地,距首都北京和天津直辖市均为120公里,两个小时的…

yuanzhou

原州Shopify建站

原州区,隶属于宁夏回族自治区固原市,地处宁夏南部,六盘山东北麓,黄土高原中西部,东邻彭阳县,南接泾源县,西连西吉县,北靠海原县、同心县,东北、西南分别与甘肃环县、隆德县毗壤,是固…

fengjie

奉节Shopify建站

奉节县位于重庆市东部,地处四川盆地东端,地理坐标为东经109°1′17″—109°45′58″,北纬30°29′19″—31°22′33″。县境东邻巫山县,南界湖北省恩施土家族苗族自治州,西连云阳县,北接巫溪县。境内有…

jiangjin

江津外贸推广

重庆市江津区,是一个历史文化悠久的城市,以地处长江要津而得名。江津位于重庆西南长江之滨,距渝中区公路里程50公里;铁路里程65公里;水路里程72公里。江津城区气候特征与重庆相近,但综合…

wuzhong

吴忠外贸推广

吴忠市位于宁夏回族自治区中部,东邻陕西定边县,西北和东北与内蒙古自治区阿拉善左旗、鄂托克前期接壤,西南和东南与甘肃靖远县、环县毗邻,北连永宁、陶乐两县,南接海原、固原两县,面积339…

xianxian

献县Google SEO

献县历史悠久,夏商时期属冀州,春秋时属燕国,战国时属燕、赵、秦。早在春秋战国时期。境内就形成了具有一定影响力的城市——乐成。汉高祖六年(公元前201年)置河间郡,汉文帝二年…

pengshui

彭水Google SEO

彭水苗族土家族自治县位于重庆直辖市东南部,处武陵山区,居乌江下游。北接湖北省,南连贵州省。全县辖10镇29乡,共274个村、26个居委,1785个村民小组、184个居民小组。2001年底,全县有17.55…

xiushan

秀山GEO优化

秀山土家族苗族自治县,位于重庆市东南部,武陵山脉中段,四川盆地东南缘的外侧,为川东南重门户。与湖南省、湖北省、贵州省毗邻,326国道和319国道贯穿全县。距长沙604公里、武汉656里、贵阳5…

wanzhou

万州GEO优化

重庆市万州区地处三峡库区腹心,长江中上游结合部,因“万川毕汇、万商云集”而得名,是长江十大港口之一。全区幅员面积3457平方公里,辖52个镇乡、街道。总人口171.7万,在重庆40个区县中人口最…

fuling

涪陵谷歌SEM

重庆市涪陵区,邑枕长、乌两江,素为乌江流域物资集散地,有渝东南门户之称,是闻名遐迩的中国“榨菜之乡”。全区幅员面积2946平方公里,辖1个经济技术开发区、1个私营经济示范区和44个乡镇、街…

shenzhou

深州谷歌SEM

深州市旧称深州,上古为冀州大陆之域。春秋时为晋地。战国属赵。秦属钜鹿郡。汉为下博县。隋开皇十六年(公元五九六年),于安平置深州,以城西故深池得名。尔后迭经废置,州城屡迁。唐徙州治…

cangxian

沧县Facebook广告

沧县位于河北省东南部,冀中平原东部,北冀京津,东邻渤海,地理坐标在北纬38°5′至38°3′,东经116°27′至117°9′之间。县政府驻沧州市新华区,全县总面积1527平方公里,其中耕地面积129万亩,总…

jizhou

冀州Facebook广告

冀州市隶属河北省衡水市,地处华北平原腹地,北距首都300公里,西距省会石家庄110公里,辖区总面积918平方公里,东与枣强县(衡水)为邻,南与南宫市、新河县(邢台)接壤,西与宁晋县(邢台)…

beibei

北碚Yandex推广

北碚区位于重庆市区西北郊的缙云山下,嘉陵江畔,幅员面积753平方公里,人口63万,是重庆的风景旅游区和智力型清洁工业基地。本世纪20年代末,由爱国实业家卢作孚先生开拓,抗战时期为陪都重庆…

fucheng

阜城Yandex推广

阜城县是河北省衡水市下辖的一个县。面积698平方千米,人口32万。邮政编码053700。阜城县人文荟萃.历史上出现过不少的学者名流,北齐的刘昼,北周的熊安生,民国初期的京剧著名表演艺术家荀慧生,…

pengyang

彭阳TikTok推广

彭阳县位于宁夏回族自治区,位于宁夏回族自治区南部边缘,六盘山东麓,介于东经106°32′-106°58’之间,北纬35°4l’-36°17’。西连宁夏固原市原州区,东、南、北环临甘肃…

为什么一定要选懂产业带的出海服务商?建材丝网的欧洲建筑商看资质与交期,工业橡塑的中东工程商问耐温与工况,毛皮服饰的俄罗斯分销商算的是季节与毛利。买家不同,决策逻辑就不同;信科网络把这些差异拆进网站结构、关键词地图和投放策略里,用他们习惯的方式出现在他们搜索的地方。