Wordpress - 仅显示当前类别下的标签

问题描述:

调查显示Wordpress中Archieve.php文件上的标签仅显示当前类别下的标签。Wordpress - 仅显示当前类别下的标签

目前所有的我已经能够做的是显示所有的标签,而不是挑下只是当前的类别与下面的代码的:

<ul id="blog-tags"> 
<?php 
$tags = get_tags(); 
if ($tags) { 
foreach ($tags as $tag) { 
    echo '<li>'; 

    if ((int) $tag->term_id === get_queried_object_id()) 
     echo "<b>$tag->name</b>"; 
    else 
     printf(
      '<a href="%1$s">%2$s</a>', 
      get_tag_link($tag->term_id), 
      $tag->name 
     ); 

    echo '</li>'; 
} 
} 
?> 
</ul> 

是否有可能操纵我上面的代码来做我想要的东西?或者我必须采取完全不同的方法。

+1

在这里你有两个帐户吗?你没有在这里发布这个问题:http://stackoverflow.com/questions/43148089/how-do-you-set-a-active-tag-in-wordpress-that-matches-the-post-your-on ? –

不完全确定这是你想要的,但基本上只需要按类别遍历所有帖子,然后获取这些帖子的标签。

你可以尝试这样的事情来获取当前类别的所有标签。你需要操纵它一下,以某种HTML的方式将其吐出格式。

<?php 
$custom_query = new WP_Query( 
array( 
    'cat' => get_query_var('cat') 
) 
); 
if ($custom_query->have_posts()) : 
while ($custom_query->have_posts()) : $custom_query->the_post(); 
    $posttags = get_the_tags(); 
    if ($posttags) { 
     foreach($posttags as $tag) { 
      $all_tags[] = $tag->term_id; 
     } 
    } 
endwhile; 
endif; 

$tags_arr = array_unique($all_tags); 
$tags_str = implode(",", $tags_arr); 

$args = array(
'smallest' => 12, 
'largest' => 12, 
'unit'  => 'px', 
'number' => 0, 
'format' => 'list', 
'include' => $tags_str 
); 
wp_tag_cloud($args); 
// or use <?php $my_tags = wp_tag_cloud('format=array'); ?> to have them in an array that you can format after 
?> 
+1

我建议在'if'之前声明'$ all_tags'数组为'NULL',并在'endif'后面检查'!is_null($ all_tags)'以防止PHP错误。 –

+0

这是一个有效的观点。 @HarkályGergő –