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

为何get_object_taxonomies对自定义文章类型返回空数组,对post正常?

排查get_object_taxonomies()针对自定义文章类型返回空数组的问题

哥们,我来帮你拆解这个问题——调用get_object_taxonomies('custom-post-type-name')返回空数组,但post能正常返回,大概率是自定义文章类型(CPT)和分类法的关联环节出了问题,或者注册时机不对,下面给你列几个最常见的原因和解决办法:

1. 自定义文章类型注册时没关联目标分类法

注册CPT的时候,register_post_type()的taxonomies参数是核心——你必须把要关联的分类法(不管是默认的category/post_tag,还是自定义分类法)明确列在这里,否则系统不会自动关联。

举个反例(错误写法):

register_post_type('custom-post-type-name', array(
    'label' => '我的自定义文章',
    'public' => true,
    // 漏了taxonomies参数,导致没有任何分类法关联
    // 其他参数...
));

正确的注册写法:

register_post_type('custom-post-type-name', array(
    'label' => '我的自定义文章',
    'public' => true,
    // 把需要关联的分类法全部列在这里
    'taxonomies' => array('category', 'post_tag', 'my-custom-taxonomy'),
    // 其他参数...
));

如果是已经注册好CPT之后才想关联分类法,可以用register_taxonomy_for_object_type()补关联:

// 把category分类法关联到你的自定义文章类型
register_taxonomy_for_object_type('category', 'custom-post-type-name');

2. 自定义分类法注册时没关联目标CPT

反过来,如果你是先注册了CPT,再注册自定义分类法,那在register_taxonomy()的object_type参数里必须包含你的CPT名称,不然分类法不会和CPT绑定。

示例代码:

register_taxonomy('my-custom-taxonomy', array('custom-post-type-name'), array(
    'label' => '我的自定义分类',
    'public' => true,
    // 其他参数...
));

3. 注册时机错误(钩子用错了)

不管是注册CPT还是分类法,都必须挂在init钩子上执行——如果你的注册代码放在init之前(比如直接在主题functions.php顶部写),或者两个注册的钩子优先级差太大(比如CPT在优先级20注册,分类法在优先级5注册),都会导致关联逻辑没生效。

正确的做法是把两个注册都挂在init钩子,保持合理的优先级:

add_action('init', 'register_my_custom_post_type', 10);
add_action('init', 'register_my_custom_taxonomy', 10);

function register_my_custom_post_type() {
    // 注册CPT的代码
}

function register_my_custom_taxonomy() {
    // 注册分类法的代码
}

4. 别忽略拼写错误!

这是最容易踩的低级坑:检查你传入get_object_taxonomies()的CPT名称,是不是和register_post_type()里的第一个参数完全一致——大小写、连字符/下划线、拼写都不能错。比如你注册的是custom_post_type,但调用时写了custom-post-type,那肯定返回空数组。

快速验证方法

你可以先调用get_post_types()确认你的自定义文章类型确实已经注册成功,再用get_taxonomies(array('object_type' => array('custom-post-type-name')))交叉验证,看能不能拿到关联的分类法,帮你定位问题环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:04:09