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>
是否有可能操纵我上面的代码来做我想要的东西?或者我必须采取完全不同的方法。
答
不完全确定这是你想要的,但基本上只需要按类别遍历所有帖子,然后获取这些帖子的标签。
你可以尝试这样的事情来获取当前类别的所有标签。你需要操纵它一下,以某种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ő –
在这里你有两个帐户吗?你没有在这里发布这个问题:http://stackoverflow.com/questions/43148089/how-do-you-set-a-active-tag-in-wordpress-that-matches-the-post-your-on ? –