首先,我不确定您是否打算将自定义帖子类型传递给the_terms()
.
无论如何,我认为get_the_terms()
会给你你所追求的灵活性。
例如:
<?php
$taxList = array("location", "venue");
foreach ($taxList as $tax) {
$terms = get_the_terms( $post->ID, $tax );
if ( $terms && ! is_wp_error( $terms ) ) {
echo "<br/>{$tax}: ";
$separator = "";
foreach ( $terms as $term ) {
echo "{$separator}{$term->name}";
$separator ", ";
}
}
}
?>
注意这是在 iPad 上输入的,因此可能包含语法或逻辑错误,因为我无法测试......但认为这个想法应该足够健全以提供帮助!
更新: OP 建议上面的代码在每一行上显示所有分类术语,这表明结果get_the_terms()
没有被第二个参数指定的分类过滤。
我想知道这是否可能是因为分类名称区分大小写,因此我在$taxList
数组中指定它们的方式可能不正确,但根据 docco,如果是这种情况,那么get_the_terms()
应该返回false
,在这种情况下什么都不会输出。
所以 - 似乎由我们来过滤结果,如下所示:
<?php
$taxList = array("location", "venue");
foreach ($taxList as $tax) {
$terms = get_the_terms( $post->ID, $tax );
if ( $terms && ! is_wp_error( $terms ) ) {
echo "<br/>{$tax}: ";
$separator = "";
foreach ( $terms as $term ) {
if (strtolower($term->taxonomy) == strtolower($tax)) {// <-- New (redundant!?) filter.
echo "{$separator}{$term->name}";
$separator ", ";
}
}
}
}
?>
更新:进一步的变化可能是自动选择当前帖子中使用的分类法以避免拼写错误等,方法是将第一行更新为:
$taxList = get_object_taxonomies('uk_events');
然后进一步,此代码可用于所有帖子类型(例如,从模板中的调用到在 functions.php 中具有此代码的函数),方法是替换'uk_events'
为$post->post_type
.