导读:本期聚焦于小伙伴创作的《如何在WordPress自定义文章类型中显示自定义分类法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在WordPress自定义文章类型中显示自定义分类法》有用,将其分享出去将是对创作者最好的鼓励。

在WordPress开发中,创建自定义文章类型和对应的自定义分类法后,需要将分类法内容在前端页面合理展示,实现内容的结构化呈现。很多开发者在关联和展示环节容易遇到分类法不生效、归档页无法访问等问题,下面详细介绍完整的实现流程。

如何在WordPress自定义文章类型中显示自定义分类法

第一步:注册自定义文章类型

首先需要注册自定义文章类型,以创建一个名为product的产品文章类型为例,使用register_post_type函数实现:

// 注册自定义文章类型 product
function register_product_post_type() {
    $labels = array(
        'name'               => '产品',
        'singular_name'      => '产品',
        'menu_name'          => '产品管理',
        'add_new'            => '添加产品',
        'add_new_item'       => '添加新产品',
        'edit_item'          => '编辑产品',
        'new_item'           => '新产品',
        'view_item'          => '查看产品',
        'search_items'       => '搜索产品',
        'not_found'          => '未找到产品',
        'not_found_in_trash' => '回收站中未找到产品'
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array('slug' => 'product'),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array('title', 'editor', 'thumbnail', 'excerpt')
    );
    register_post_type('product', $args);
}
add_action('init', 'register_product_post_type');

第二步:注册自定义分类法并关联文章类型

接下来注册自定义分类法,比如产品分类,使用register_taxonomy函数,并且将其与product文章类型关联:

// 注册自定义分类法 product_category 并关联 product 文章类型
function register_product_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(
        'hierarchical'      => true, // 设置为true表示分类法为层级结构,类似默认的分类
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true, // 在文章列表页显示该分类法列
        'query_var'         => true,
        'rewrite'           => array('slug' => 'product-category')
    );
    // 将分类法关联到 product 文章类型
    register_taxonomy('product_category', array('product'), $args);
}
add_action('init', 'register_product_taxonomy');

第三步:配置分类法归档页

要让自定义分类法的归档页可以正常访问,需要确保rewrite参数正确设置,并且刷新WordPress的固定链接。操作步骤如下:

  • 进入WordPress后台的设置>固定链接页面
  • 不需要修改任何设置,直接点击保存更改按钮,触发重写规则刷新
  • 访问你的域名/product-category/分类别名即可看到该分类下的所有产品文章

第四步:前端展示分类法内容

1. 在文章详情页显示所属分类

single-product.php模板中,使用get_the_terms函数获取当前文章的所有分类法 term:

// 获取当前产品文章的所有产品分类
$product_terms = get_the_terms(get_the_ID(), 'product_category');
if (!empty($product_terms) && !is_wp_error($product_terms)) {
    echo '<p>所属分类:';
    foreach ($product_terms as $term) {
        // 输出分类名称和链接
        echo '<a href="' . get_term_link($term) . '">' . $term->name . '</a> ';
    }
    echo '</p>';
}

2. 在分类归档页展示文章列表

WordPress会自动使用taxonomy-product_category.php模板作为产品分类的归档页,如果没有该模板,会 fallback 到archive.php。可以在taxonomy-product_category.php中自定义展示逻辑:

if (have_posts()) {
    echo '<h2>' . single_term_title('', false) . ' 分类下的产品</h2>';
    echo '<ul>';
    while (have_posts()) {
        the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
    // 输出分页
    the_posts_pagination();
} else {
    echo '<p>该分类下暂无产品</p>';
}

3. 自定义查询指定分类下的文章

如果需要在其他页面展示指定产品分类的文章,可以使用WP_Query配合分类法参数查询:

// 查询产品分类为 电子产品 的所有产品
$args = array(
    'post_type'      => 'product',
    'posts_per_page' => 10,
    'tax_query'      => array(
        array(
            'taxonomy' => 'product_category',
            'field'    => 'slug',
            'terms'    => 'electronic-product' // 分类的别名
        )
    )
);
$query = new WP_Query($args);
if ($query->have_posts()) {
    echo '<h3>电子产品列表</h3>';
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
    wp_reset_postdata(); // 重置查询数据
} else {
    echo '<p>暂无电子产品</p>';
}

常见问题解决

  • 分类归档页显示404:检查分类法的rewrite参数是否正确,并且刷新固定链接
  • 文章列表不显示分类筛选:检查register_taxonomyshow_admin_column是否设置为true
  • 获取分类返回空:检查get_the_terms的第二个参数是否为正确的分类法名称,且文章确实关联了该分类

WordPress自定义文章类型自定义分类法register_taxonomyWP_Query修改时间:2026-06-04 06:51:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。