测试当前页面上的分类是否至少有一个术语,且有多个页面使用该术语进行标记

时间:2020-07-14 作者:HopefullCoder

是否有(简单?)如何测试分类法是否至少有一个标记用于多个页面?

我知道如何在当前页面上查看给定分类法中是否有任何术语。我知道如何查看当前页面上的给定术语是否标记在当前页面上。以下是我编写的代码:

if( ! empty( wp_get_object_terms($post->ID, \'topic\') ) ) {
echo \'<p>Explore other posts with these topics:</p><div class="topic-list"><p class="meta-tag-list">\'; 

$terms = wp_get_object_terms($post->ID, \'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>\';
    }
}
echo \'</p></div> <!--   topic-list -->\';
}
But我的第一条if语句只是检查一下该页面上是否有该分类法的术语。但它真正需要做的是检查是否至少有一个术语标记了至少两个页面。

因为如果当前页面有一个术语,但该页面是该术语的唯一页面,那么第一个if语句将执行,并且我的标题为;浏览其他与这些主题相关的帖子:“quot;显示,但第二条if语句不执行。所以我最终得到了一个标题,下面什么都没有。

我认为,如果使用所有术语标记的总页面的平均数量大于1(使用此页面标记的术语标记的所有页面的总数除以此页面上的标签总数),那么这将符合标准。有没有一种简单的方法来测试这一点,或者有没有更好的方法来测试这一点?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您已经具备了所需的所有逻辑。您只需要重新安排事情,以便在知道存在术语之前不会输出任何内容。因此,与其立即回显每个链接,不如将它们保存到一个变量中,然后仅输出介绍性段落和包装元素(如果该变量不为空):

$terms = wp_get_object_terms($post->ID, \'topic\');
$links = []; // We will add links to this.

foreach ($terms as $term) {
    if ( $term->count > 1 ) { // Only add links for terms with more than one post.
        $links[] = \'<a href="\' . esc_url( get_term_link( $term->term_id ) ) . \'" rel="tag">\' . esc_html( $term->name ) . \'</a>\'; // Add the link.
    }
}

if ( ! empty( $links ) ) {
    echo \'<p>Explore other posts with these topics:</p><div class="topic-list"><p class="meta-tag-list">\';
    echo implode( $links );
    echo \'</p></div> <!--   topic-list -->\'; 
}

相关推荐

Dynamic CPT / Taxonomy

我在我的网站上使用了多个CPT/分类法/术语。目前,为了定制和使用好的WP模板,我做了一个taxonomy-$taxonomy.php 每个CPT的文件。但事实上,在我的模板中,只有CPT和分类词是不同的。是否存在使其动态化的解决方案?UPDATED QUESTION我所说的动态是指:只能使用taxonomy.php 模板而不是taxonomy-$taxonomy.php 模板,并具有\'post_type => \'$post_type\' 和\'taxonomy\' => \'$taxon