如果我理解正确,这里的问题是get_the_terms(..)
返回父类别和子类别。正如您在评论中所说,其中只有一个家长和一个孩子,我们可以使用这些信息来获得正确的术语。
基本上我们需要过滤结果,我们知道parent
当另一个有时,不要设置,所以只需设置后一个。
function joamika_get_country_from_post(int $postId): ?string {
$countries = get_the_terms($postId, \'country\');
if (!is_array($countries)) {
return null;
}
array_filter($countries, function(\\WP_Term $term): bool {
return $term->parent !== 0;
});
if (empty($countries)) {
return null;
}
return $countries[0]->slug;
}
$fcountry = joamika_get_country_from_post($post_id);
if ($fcountry === null) {
// something went wrong
}
// continue with your logic
如果这是你第一次看到
foo(int $postId): ?string {
, 别担心。您可以删除或保留它们。我希望我的PHP代码尽可能严格地类型化-您可以
read more about the topic here.
你仍然需要考虑在找不到国家的情况下处理此案。