WordPress中如何获取分类ID?自定义分类判断代码失效求助
问题解决:根据文章分类ID显示不同文本并输出分类ID
原代码存在几个问题导致无法正常运行:
- 未处理文章无分类的场景,此时
$categories为空数组,访问$categories[0]会触发PHP错误 - 仅取第一个分类,若文章同时属于多个分类(包含ID83但不是第一个),逻辑判断会失效
- 若代码运行在主循环之外,
get_the_category()需要传入文章ID才能正确获取分类
修正方案一:支持多分类判断+输出所有分类ID
如果需要判断文章是否属于目标分类(无论是否为第一个),同时输出所有关联的分类ID,使用以下代码:
// 获取当前文章分类,非主循环环境需传入文章ID:get_the_category(get_the_ID()) $categories = get_the_category(); $category_ids = []; $is_in_target_cat = false; // 遍历分类,收集ID并检查是否包含目标分类 if (!empty($categories)) { foreach ($categories as $cat) { $category_ids[] = $cat->cat_ID; if ($cat->cat_ID == 83) { $is_in_target_cat = true; } } } // 输出文章关联的分类ID echo '当前文章分类ID:' . (empty($category_ids) ? '无分类' : implode(', ', $category_ids)); // 根据分类显示对应文本 echo '<br>' . ($is_in_target_cat ? '123' : '1234');
修正方案二:仅取第一个分类+处理无分类场景
如果业务逻辑只需要以第一个分类为准,使用以下代码:
$categories = get_the_category(); $first_cat_id = ''; // 处理无分类情况,避免报错 if (!empty($categories)) { $first_cat_id = $categories[0]->cat_ID; echo '当前文章第一个分类ID:' . $first_cat_id; } else { echo '当前文章无分类'; } // 判断分类ID并输出文本 echo '<br>' . ($first_cat_id == 83 ? '123' : '1234');
额外注意事项
- 确保代码运行在WordPress的主循环内,或手动传入文章ID给
get_the_category()函数 - 若使用自定义分类法,需改用
get_the_terms()函数替代get_the_category()
内容的提问来源于stack exchange,提问作者kfir ben shimon
相关产品推荐
相关产品推荐

