首页 > CMS教程 > WordPress > 正文

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

星降
发布: 2025-08-31 09:49:01
原创
550人浏览过
答案:自定义分类法可为特定内容类型创建专属分类体系,通过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提供了内容的结构(骨架),而自定义分类法则提供了内容的组织和描述(肌肉和筋络)。

自由画布
自由画布

百度文库和百度网盘联合开发的AI创作工具类智能体

自由画布73
查看详情 自由画布

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

这时,自定义分类法就派上用场了。你可以为“图书”这个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
登录后复制
参数,是充分发挥自定义分类法威力的关键一步。

以上就是WordPress分类法是什么?自定义分类怎么设?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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