0

0

WordPress分类法是什么?自定义分类怎么设?

星降

星降

发布时间:2025-08-31 09:49:01

|

566人浏览过

|

来源于php中文网

原创

答案:自定义分类法可为特定内容类型创建专属分类体系,通过register_taxonomy()函数关联自定义文章类型,实现数据的高效组织与管理,提升用户体验和SEO效果。

wordpress分类法是什么?自定义分类怎么设?

WordPress分类法,简单来说,就是你给网站内容做分类、打标签的工具。它能帮你把庞杂的信息梳理得井井有条,让访客和搜索引擎都能更容易地找到他们想要的东西,就像图书馆里的 Dewey Decimal System,只不过在你的网站上,你可以完全按自己的需求来定制这套系统。而自定义分类法,则是将这种分类能力提升到新的维度,让你能够为特定的内容类型创建独一无二的分类体系。

解决方案

设置自定义分类法,核心在于使用WordPress提供的

register_taxonomy()
函数。这通常是在你的主题的
functions.php
文件中,或者一个自定义插件里完成。我个人倾向于放在插件里,这样即使更换主题,你的自定义分类法也不会丢失,这才是真正的数据结构,不应该依附于视觉层面的主题。

首先,你需要定义你的自定义分类法,这包括它的名称、显示标签以及一些行为参数。

function register_my_custom_taxonomy() {
    // 定义分类法的标签
    $labels = array(
        'name'                       => _x( '产品系列', 'taxonomy general name', 'your-text-domain' ),
        'singular_name'              => _x( '产品系列', 'taxonomy singular name', 'your-text-domain' ),
        'search_items'               => __( '搜索产品系列', 'your-text-domain' ),
        'popular_items'              => __( '热门产品系列', 'your-text-domain' ),
        'all_items'                  => __( '所有产品系列', 'your-text-domain' ),
        'parent_item'                => __( '父级产品系列', 'your-text-domain' ),
        'parent_item_colon'          => __( '父级产品系列:', 'your-text-domain' ),
        'edit_item'                  => __( '编辑产品系列', 'your-text-domain' ),
        'update_item'                => __( '更新产品系列', 'your-text-domain' ),
        'add_new_item'               => __( '添加新产品系列', 'your-text-domain' ),
        'new_item_name'              => __( '新产品系列名称', 'your-text-domain' ),
        'separate_items_with_commas' => __( '用逗号分隔产品系列', 'your-text-domain' ),
        'add_or_remove_items'        => __( '添加或移除产品系列', 'your-text-domain' ),
        'choose_from_most_used'      => __( '从最常用产品系列中选择', 'your-text-domain' ),
        'not_found'                  => __( '未找到产品系列', 'your-text-domain' ),
        'menu_name'                  => __( '产品系列', 'your-text-domain' ),
    );

    // 定义分类法的参数
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true, // 设置为true表示像分类一样有层级,false则像标签
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'rewrite'                    => array( 'slug' => 'product-series' ), // URL重写规则
    );

    // 注册分类法,并关联到特定的文章类型
    // 这里假设你有一个名为 'product' 的自定义文章类型
    register_taxonomy( 'product_series', array( 'product' ), $args );
}
add_action( 'init', 'register_my_custom_taxonomy' );

在这个例子中,我们创建了一个名为

product_series
的自定义分类法,它与一个假设的
product
自定义文章类型相关联。
hierarchical
设置为
true
意味着它会像默认的“分类”一样,可以有父子层级关系,这对于组织产品系列非常有用。如果你想让它像“标签”一样,没有层级,那就设置为
false
rewrite
参数则控制了你的分类法在URL中的表现形式,比如
yourdomain.com/product-series/summer-collection/

完成这些代码并保存后,刷新你的WordPress后台,你会在

产品
(如果你的自定义文章类型叫这个)菜单下看到一个新的“产品系列”子菜单,你就可以开始添加和管理你的自定义分类法术语了。

为什么标准分类和标签不够用?何时需要自定义分类法?

我经常听到有人问,WordPress不是已经有“分类”和“标签”了吗,为什么还要搞什么自定义分类法,这不是把简单的事情复杂化吗?说实话,一开始我也是这么想的。但随着项目越来越复杂,我发现默认的分类和标签,它们的局限性很快就显现出来了。

“分类”和“标签”是为通用博客内容设计的,它们很好地服务于文章(post)这种默认内容类型。但如果你的网站不仅仅是博客呢?假设你正在构建一个在线商店,你需要管理“产品”。那么,“产品”本身就应该是一种独立的内容类型(即自定义文章类型)。这时候,如果仍然用默认的“分类”来划分产品,比如“电子产品”、“服装”,那看起来似乎也行。但如果我想进一步细分,比如按“品牌”、“材质”、“适用人群”来分类,这些信息对于“文章”来说毫无意义,对于“产品”却是核心属性。

这就是自定义分类法的价值所在。它让你能够为特定的内容类型创建高度相关的分类体系。比如,为“产品”创建“品牌”分类法,为“电影”创建“导演”或“类型”分类法,为“食谱”创建“菜系”或“食材”分类法。这些分类法与它们所依附的内容类型紧密关联,提供了一种更精确、更有意义的组织方式。在我看来,它不仅提升了用户体验,让用户能更快地找到他们想要的东西,也极大地方便了后台管理,让内容编辑者能更直观地理解和操作数据。更重要的是,对于SEO来说,这种语义化的URL结构和内容组织,能让搜索引擎更好地理解你的网站内容,从而可能提升你的排名。

自定义分类法与自定义文章类型:它们是天生一对吗?

是的,在我多年的WordPress开发经验中,我几乎总是将自定义分类法与自定义文章类型(Custom Post Types, CPT)视为一对不可分割的搭档。它们之间的关系,就像是骨架和肌肉——CPT提供了内容的结构(骨架),而自定义分类法则提供了内容的组织和描述(肌肉和筋络)。

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

想象一下,你创建了一个名为“图书”的自定义文章类型。如果没有自定义分类法,你的图书内容可能就只能通过默认的“分类”和“标签”来组织。但“图书”有其独特的属性,比如“作者”、“出版社”、“体裁”等。这些属性,用默认的分类和标签来表示,会显得非常别扭,甚至会污染你的全局分类和标签列表。

这时,自定义分类法就派上用场了。你可以为“图书”这个CPT创建:

  • 一个名为“作者”的自定义分类法
  • 一个名为“出版社”的自定义分类法
  • 一个名为“体裁”的自定义分类法

这样,每一本图书在后台编辑时,都会有专门的模块让你选择或添加作者、出版社和体裁,而这些选择只针对“图书”这种内容类型有效。这种强关联性,使得数据结构更加清晰、逻辑更加严谨。在前端展示时,用户可以通过点击“作者”或“体裁”来浏览所有相关的图书,这极大地增强了网站的导航性和内容的发现性。

从技术实现上讲,

register_taxonomy()
函数的第二个参数就是用来指定这个自定义分类法要关联到哪些文章类型。比如
register_taxonomy( 'genre', array( 'book', 'movie' ), $args );
就可以让“体裁”分类法同时作用于“图书”和“电影”这两种内容。这种灵活性,让你可以根据实际需求,构建出非常强大和精细的内容管理系统。可以说,没有自定义文章类型,自定义分类法的作用会大打折扣;反之亦然。它们共同构成了WordPress强大的内容管理能力的核心。

管理自定义分类法:后台界面与查询技巧

自定义分类法一旦注册成功,其管理界面和操作方式与WordPress自带的分类和标签非常相似,这大大降低了学习成本。在WordPress后台,你会发现你的自定义文章类型菜单下多了一个子菜单,点击进去就是该分类法的管理页面。在这里,你可以添加新的分类术语(term)、编辑现有术语、删除术语,以及管理它们的层级关系(如果

hierarchical
设置为
true
)。

例如,如果你创建了“产品系列”分类法,并在后台添加了“夏季新品”、“冬季特惠”等术语,那么当你编辑一个“产品”文章时,右侧的侧边栏就会出现一个“产品系列”的元数据框,你可以像选择文章分类一样,勾选或添加新的产品系列。

在前端展示自定义分类法的内容时,我们主要依赖

WP_Query
。这是WordPress查询内容的强大工具。要查询属于某个自定义分类法术语的文章,你需要在
WP_Query
的参数中加入
tax_query

$args = array(
    'post_type' => 'product', // 查询自定义文章类型 'product'
    'posts_per_page' => 10,
    'tax_query' => array(
        array(
            'taxonomy' => 'product_series', // 你的自定义分类法名称
            'field'    => 'slug',           // 可以是 'slug', 'name', 'term_id'
            'terms'    => 'summer-collection', // 你想要查询的术语的slug
        ),
    ),
);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // 显示产品内容,比如标题、缩略图等
        the_title();
        the_post_thumbnail();
    }
    wp_reset_postdata(); // 恢复原始文章数据
} else {
    // 没有找到相关产品
}

这段代码会查询所有属于“summer-collection”这个“产品系列”的“产品”。

tax_query
数组允许你进行更复杂的查询,比如查询属于多个分类法或多个术语的文章,或者使用
operator
参数(如
AND
,
OR
,
NOT IN
)来组合查询条件。这种灵活性使得你可以构建出非常精细的内容列表和筛选功能,这对于电商网站、目录网站等尤其重要。掌握
WP_Query
tax_query
参数,是充分发挥自定义分类法威力的关键一步。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2593

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1620

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1508

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1417

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1447

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号