我有一个自定义帖子类型,其中设置了自定义分类法。
我想打印出帖子包含的类别(自定义分类),但排除一个。我找不到排除该类别的解决方案。这是我的代码,用于输出自定义帖子类型所在的类别列表:
<?php the_terms( $post->ID, 'critter_cat', 'Critter Type: ', ', ', ' ' ); ?>
如何排除特定类别?
谢谢。
我有一个自定义帖子类型,其中设置了自定义分类法。
我想打印出帖子包含的类别(自定义分类),但排除一个。我找不到排除该类别的解决方案。这是我的代码,用于输出自定义帖子类型所在的类别列表:
<?php the_terms( $post->ID, 'critter_cat', 'Critter Type: ', ', ', ' ' ); ?>
如何排除特定类别?
谢谢。
您可以在 functions.php 文件中创建一个函数,该函数调用get_the_terms
以将术语列表作为数组返回,然后删除您不想要的项目。
试试这个:
function get_excluded_terms( $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;
$excluded_terms[] = '<a href="' . $link . '" rel="tag">' . $term->name . '</a>';
}
}
$excluded_terms = apply_filters( "term_links-$taxonomy", $excluded_terms );
return $before . join( $sep, $excluded_terms ) . $after;
}
然后像这样使用它:
<?php echo get_excluded_terms( $post->ID, 'critter_cat', 'Critter Type: ', ', ', ' ', array(667)); ?>