默认情况下,您不能从中排除术语get_the_term_list
. 但是,可以调整原始函数并使其排除术语。原始函数可在wp includes/category模板中找到。php第1277至1306行。
将此添加到您的函数中。php。如上所述,此新函数将排除您指定的任何术语
<?php
function get_modified_term_list( $id = 0, $taxonomy, $before = \'\', $sep = \'\', $after = \'\', $exclude = array() ) {
$terms = get_the_terms( $id, $taxonomy );
if ( is_wp_error( $terms ) )
return $terms;
if ( empty( $terms ) )
return false;
foreach ( $terms as $term ) {
if(!in_array($term->term_id,$exclude)) {
$link = get_term_link( $term, $taxonomy );
if ( is_wp_error( $link ) )
return $link;
$term_links[] = \'<a href="\' . $link . \'" rel="tag">\' . $term->name . \'</a>\';
}
}
if( !isset( $term_links ) )
return false;
return $before . join( $sep, $term_links ) . $after;
}
你可以改变
$term->term_id
到
$term->slug
如果您需要使用slug而不是ID。您甚至可以使用
$term->name
如果要使用名称
其用途将与原始函数完全相同,但有一个例外,即最后一个参数是要排除的术语ID数组。只要确定一下,如果你改变了$term->term_id
到$term->slug
, 你需要使用一个slug数组,而不是ID。这同样适用于术语名称。
下面是如何在模板文件中使用该函数
<?php echo get_modified_term_list( get_the_ID(), \'project_category\', \'\', \' \', \'\', array(20) ); ?>
编辑@manu在评论中提到,如果一篇文章只有一个术语,并且术语是排除的术语,那么函数将返回PHP警告和通知
注意错误:[8]未定义变量:term\\u links
和
警告错误:[2]join():传递的参数无效
可以通过在foreach
环
if( !isset( $term_links ) )
return false;
这将检查
$term_links
isset,如果没有,它将停止执行并返回false
我已经更新了答案中的原始代码,所以您可以按原样复制和粘贴