You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress技术问询:如何获取当前文章首个分类并判断多父分类?

判断WordPress文章是否有多个父分类

嘿,我懂你的困扰——之前的代码只能判断文章关联的分类数量,但没法区分父分类和子分类,所以没法准确判断是不是有多个父分类对吧?别担心,我们可以利用WordPress分类对象里的parent属性来解决这个问题。

核心思路

WordPress的get_the_category()返回的每个分类对象都有一个parent字段:

  • 父分类的parent值为0
  • 子分类的parent值是它所属父分类的ID

所以我们只需要:

  1. 获取文章的所有分类
  2. 过滤出所有parent为0的分类(也就是真正的父分类)
  3. 统计这些父分类的数量,就能判断是否存在多个父分类了

完整代码示例

// 获取指定文章的所有分类(如果在文章循环内,可省略$post_id参数)
$categories = get_the_category($post_id);

// 过滤出所有父分类(parent值为0的分类)
$parent_categories = array_filter($categories, function($category) {
    return $category->parent === 0;
});

// 判断父分类数量
if (count($parent_categories) > 1) {
    // 文章有多个父分类的处理逻辑
    echo "这篇文章关联了多个父分类";
} elseif (count($parent_categories) === 1) {
    // 只有一个父分类的处理逻辑
    // 把关联数组转成索引数组,方便取第一个元素
    $parent_category_array = array_values($parent_categories);
    $first_parent_category = $parent_category_array[0];
    echo "文章的父分类是:" . $first_parent_category->name;
} else {
    // 没有父分类的情况(这种情况通常是分类设置异常,因为子分类必须归属父分类)
    echo "未找到关联的父分类";
}

为什么之前的代码不生效?

你之前的代码直接取get_the_category($post_id)[0]或[1],但这些元素可能是子分类,它们的parent值不为0,所以没法准确判断父分类的数量。通过array_filter过滤出parent=0的分类,才能精准拿到所有父分类。

额外提示

  • 如果是在文章循环中调用,get_the_category()不需要传$post_id,会自动获取当前文章的分类
  • array_filter返回的是关联数组,用array_values()转成索引数组后,就可以用[0]来取第一个父分类对象了
  • 正常情况下,WordPress的子分类必须关联一个父分类,所以“没有父分类”的情况很少见,可能是分类设置有误

内容的提问来源于stack exchange,提问作者Claudio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:04:48