从Get_the_Term_List排除一个类别

时间:2014-07-30 作者:jojo79

我想从我的帖子中排除其中一个类别,它将始终是相同的,命名为“纪录片”,ID为20。

代码如下:

<?php echo get_the_term_list( get_the_ID(), \'project_category\', \'\', \', \' ); ?>

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

默认情况下,您不能从中排除术语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

我已经更新了答案中的原始代码,所以您可以按原样复制和粘贴

SO网友:Bindiya Patoliya

Try this

<?php
   $terms = get_the_terms( the_ID(), \'project_category\' );
   if(!empty($terms)) : ?>
<?php
    foreach ( $terms as $term  ) {
        if($term->term_id != 20) { // the term ID you want to exclude
            $term_IDs[] = $term->term_id;
        }
     }
      $terms = implode(\',\', $term_IDs);
?>
SO网友:gtamborero

那更容易!这里有一个简单的方法:它非常适合我:

$term_list= get_the_term_list( $post->ID, \'post_type_name\', "", " / "); 

echo str_replace ( \'/ &lt;a href="http://www.myblogname.com/blog/destacados/" rel="tag">Destacados - Portada&lt;/a>\' , "" , $term_list);
我要做的是:搜索术语列表字符串,并使用字符串替换函数完全删除我想要的链接(在这种情况下:/ &lt;a href="http://www.myblogname.com/blog/destacados/" rel="tag">Destacados - Portada&lt;/a>)

要确切知道要删除什么,只需在str_replaceecho $term_list;

结束

相关推荐

从WP_LIST_CATEGORIES中删除‘Category’一词

我有以下代码:wp_list_categories();它输出我的所有类别,但是,它使它们成为列表元素的子元素,称为CATEGORIES.所以,我得到了一个无序的列表,如下所示:CATEGORIES * FASHION * DAILY FASHION CANDY * TRENDS * BEAUTY * ACCESSORIES * CELEBRITIES * LIFESTYLE 但是,我只需要:* FASHION * DAILY FA