如果帖子是唯一具有该标签的帖子,则不要在帖子上显示该标签

时间:2020-03-31 作者:HopefullCoder

在帖子的底部,我显示了帖子的所有标签。

如果当前帖子是唯一带有标记X的帖子,那么我不希望标记X显示在列表中。因为如果有人点击它,他们会被带到一个归档页面,在那里他们刚刚看到的帖子是唯一列出的帖子。无用的

否则,我对只有一个帖子的标签没有问题。

这是一种带有自定义分类法的自定义帖子类型(三种不同的分类法:主题、名称、明喻)

下面是我如何显示主题分类法:

<p class="meta-tag-list"> 
<?php
echo get_the_term_list( $post->ID, \'topic\',
\'\', \' \', \'\' );
?>  </p>
是否已经存在允许我执行此操作的函数?

2 个回复
最合适的回答,由SO网友:simongcc 整理而成

因为get_the_term_list() 为您创建html链接。所以

您需要使用wp_get_object_terms 要获取术语信息列表,请首先使用count进行处理

  • 比较每个标记计数,如果计数>1,则创建链接并输出我刚才尝试过的。它起作用了

    <p class="meta-tag-list"> 
    <?php
    $terms = wp_get_object_terms($post->ID, \'category\'); // replace \'category\' (default Post post type taxonomy name) with your taxonomy such as \'topic\'
    foreach ($terms as $key => $term) {
        if( $term->count > 1 ) { // if the count is > 1, output, if not, then nothing will happen
            $link = get_term_link( $term->term_id );
            echo \'<a href="\' . esc_url( $link ) . \'" rel="tag">\' . $term->name . \'</a>\';
        }
    }
    ?>  
    </p>
    

  • SO网友:Michael

    您可以尝试使用特定于分类法“主题”的筛选函数(添加到(子)主题的functions.php中):(基于https://developer.wordpress.org/reference/functions/get_the_term_list/https://developer.wordpress.org/reference/functions/get_the_terms/ )

    // define the get_the_terms callback 
    function filter_get_the_topic_terms( $terms, $postid, $taxonomy ) {
        if( !is_admin() && $taxonomy == \'topic\' ) : // make filter magic happen here... 
            $filtered_terms = array();
            foreach( $terms as $term ) :
                if( $term->count > 1 ) {
                    $filtered_terms[] = $term;
                }
            endforeach;
            $terms = $filtered_terms;
        endif;
        return $terms;
    }
    // add the filter 
    add_filter( \'get_the_terms\', \'filter_get_the_topic_terms\', 10, 3 );
    

    相关推荐

    Global changing of H Tags

    是否有一种方法可以全局更改标题1、标题2、标题3等的字体大小。例如,如果我想更改所有标记为H2的内容的字体大小,则站点中每个页面上的每个H2文本大小都会更改。非常感谢。