如果没有分配帖子,get_terms 的正常行为是不返回术语。但事实并非如此,我可以看到在管理员中分配的术语,还检查了数据库,一切似乎都很好。还要检查此代码:
$p = get_post(5018); // correctly returns the post
// works: returns the assigned term
$post_terms = wp_get_post_terms($p->ID, 'solutions_sectors', array("fields" => "all"));
// now the opposite:
$first = $post_terms[0];
$tid = $first->term_id;
// works: gives a list of post ids
$term_posts = get_objects_in_term($tid, 'solutions_sectors');
// still, this will output an empty array:
$terms = get_terms(array('taxonomy' => 'solutions_sectors');
// while this will output the right array (obviously):
$terms = get_terms(array('taxonomy' => 'solutions_sectors', 'hide_empty' => false));
所以,我的帖子确实有条款,但 get_terms 似乎没有意识到这一点。为什么?
请注意以下事项:
我正在使用带有自定义分类法的自定义帖子类型
我使用 polylang 作为语言插件(但所有帖子和术语似乎都已正确翻译和分配)