Формируем и выводим список меток текущей категории.
Вариант в файл funсtion.php
function get_category_tags($cats) {
global $wpdb;
$tags = $wpdb->get_results
("
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, t2.count as posts_count, null as tag_link
FROM
wp_posts as p1
LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID
LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id,
wp_posts as p2
LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID
LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id
WHERE
t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (". $cats .") AND
t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
AND p1.ID = p2.ID
ORDER by tag_name
");
foreach($tags as $tag)
$out .= '<a href="'. get_tag_link($tag->tag_id) .'">'. $tag->tag_name .'<sub>'. $tag->posts_count .'</sub></a>, ';
return rtrim($out, ', ');
}
В шаблон вывода категории
<?php echo get_category_tags($id); ?>
ID — либо переменная ID текущей категории, либо прописать конкретную категорию
С кнопкой «All» (для сортировки по меткам) и проверкой — выводить только при наличии меток
<?php if ( get_category_tags($category_id) ): ?><div id="tag-list"><div id="all" class="activ">All</div><?php echo get_category_tags($category_id); ?></div><?php endif; ?>
Вариант прямо в верстку
Первоначальный вариант
<?php
$getcat = get_the_category();
if($getcat[0]){
$cat_id=$getcat[0]->term_id;
}
query_posts('cat='.$cat_id.'&posts_per_page=-1');
if(have_posts()): while (have_posts()) : the_post();
$all_tag_objects = get_the_tags();
if($all_tag_objects){
foreach($all_tag_objects as $tag) {
if($tag->count > 0) {$all_tag_ids[] = $tag -> term_id;}
}
}
endwhile;endif;
$tag_ids_unique = array_unique($all_tag_ids);
foreach($tag_ids_unique as $tag_id) {
$post_tag = get_term( $tag_id, 'post_tag' );
//Вывод тегов
echo '<a href="'.get_tag_link($tag_id).'">'.$post_tag->name.' ( '.$post_tag->count.' )</a>';
}
?>
Сортировка для категорий
Дополненный вариант с проверкой на наличие тегов и модулем сортировки. Не нарушает пэйджинацию (за счет вставки wp_reset_query();). Можно делать миниатюры меток и ссылку на метку.
<div id="sorting">
<div id="tag-list">
<?php
$getcat = get_the_category();
if($getcat[0]){
$cat_id=$getcat[0]->term_id;
}
query_posts('cat='.$cat_id.''); //&posts_per_page=-1 убрал из конца скобок
if(have_posts()): while (have_posts()) : the_post();
$all_tag_objects = get_the_tags();
if($all_tag_objects){
foreach($all_tag_objects as $tag) {
if($tag->count > 0) {$all_tag_ids[] = $tag -> term_id;}
}
}
endwhile;endif; wp_reset_query();
if ( $tag->count > 0 ) {
$tag_ids_unique = array_unique($all_tag_ids);
echo '<div id="all" class="activ">All</div>';
foreach($tag_ids_unique as $tag_id) {
$post_tag = get_term( $tag_id, 'post_tag' );
$imgcat1 = get_field("mini-thumb",$post_tag); //Для миниатюры
$tag_link = get_tag_link($post_tag->term_id); //Если нужна ссылка на метку
//Вывод тегов
echo '<a href="'.$tag_link.'"><div id="' .$post_tag->slug. '">' .$post_tag->name. '<img class="cat-image" alt="'.$post_tag->name.'" src="'.$imgcat1['sizes']['medium'].'"></div></a>';
}
}
?>
</div>
<div id="style-list">
<span id="btn-block"><i class="fa fa-th-large"></i></span>
<span id="btn-line"><i class="fa fa-bars"></i></span>
<span id="btn-photo"><i class="fa fa-picture-o"></i></span>
</div>
</div>
Сортировка для таксономий
Немного изменен изначальный цикл. Работает в шаблоне таксономий.
<div id="sorting">
<div id="tag-list">
<?php
query_posts(array( 'posts_per_page' => -1,
'post_type' => array( 'post', 'page', 'track' ),
'tax_query' => array(
array( 'include_children' => false,
'taxonomy' => $tax,
'field' => 'term_id',
'terms' => $term->term_id
)
)
));
if(have_posts()): while (have_posts()) : the_post();
$all_tag_objects = get_the_tags();
if($all_tag_objects){
foreach($all_tag_objects as $tag) {
if($tag->count > 0) {$all_tag_ids[] = $tag -> term_id;}
}
}
endwhile;endif; wp_reset_query();
if ( $tag->count > 0 ) {
$tag_ids_unique = array_unique($all_tag_ids);
echo '<div id="all" class="activ">All</div>';
foreach($tag_ids_unique as $tag_id) {
$post_tag = get_term( $tag_id, 'post_tag' );
$imgcat1 = get_field("mini-thumb",$post_tag);
$tag_link = get_tag_link($post_tag->term_id); //Если нужна ссылка на метку
//Вывод тегов
echo '<div id="' .$post_tag->slug. '">' .$post_tag->name. '<img class="cat-image" alt="'.$post_tag->name.'" src="'.$imgcat1['sizes']['medium'].'"></div>';
}
}
?>
</div>
<div id="style-list">
<span id="btn-block"><i class="fa fa-th-large"></i></span>
<span id="btn-line"><i class="fa fa-bars"></i></span>
<span id="btn-photo"><i class="fa fa-picture-o"></i></span>
</div>
</div>
Данный функционал можно использовать для сортировки записей по меткам.
Сортировка по терминам пользовательской таксономии
Если нам надо делать сортировку по терминам пользовательской таксономии, например label, в коде для шаблона таксономий делаем небольшие изменения.
<div id="sorting">
<div id="tag-list">
<?php
query_posts(array( 'posts_per_page' => -1,
'post_type' => array( 'post', 'page', 'track' ),
'tax_query' => array(
array( 'include_children' => false,
'taxonomy' => $tax,
'field' => 'term_id',
'terms' => $term->term_id
)
)
));
if(have_posts()): while (have_posts()) : the_post();
$all_tag_objects = get_the_terms ( $post->ID, 'label' ); //get_the_tags();
if($all_tag_objects){
foreach($all_tag_objects as $tag) {
if($tag->count > 0) {$all_tag_ids[] = $tag -> term_id;}
}
}
endwhile;endif; wp_reset_query();
if ( $tag->count > 0 ) {
$tag_ids_unique = array_unique($all_tag_ids);
echo '<div id="all" class="activ">All</div>';
foreach($tag_ids_unique as $tag_id) {
$post_tag = get_term( $tag_id, 'post_tag' );
$imgcat1 = get_field("mini-thumb",$post_tag);
$tag_link = get_tag_link($post_tag->term_id); //Если нужна ссылка на метку
//Вывод тегов
echo '<div id="' .$post_tag->slug. '">' .$post_tag->name. '<img class="cat-image" alt="'.$post_tag->name.'" src="'.$imgcat1['sizes']['medium'].'"></div>';
}
}
?>
</div>
<div id="style-list">
<span id="btn-block"><i class="fa fa-th-large"></i></span>
<span id="btn-line"><i class="fa fa-bars"></i></span>
<span id="btn-photo"><i class="fa fa-picture-o"></i></span>
</div>
</div>
И в коде для jquery тоже
<script type="text/javascript">
$(document).ready(function() {
$('#tag-list div').click(function() {
$('#tag-list div').removeClass(' activ ');
$('#tag-list div').addClass(' passiv ');
$(this).removeClass(' passiv ');
$(this).addClass(' activ ');
});
$('#tag-list div').click(function() { $('.hentry').parent('div').show(); });
<?php
foreach($tag_ids_unique as $tag_id) {
$post_tag = get_term( $tag_id, 'post_tag' );
echo '$("#'.$post_tag->slug.'").click(function() { $(".hentry").not(".label-'.$post_tag->slug.'").parent("div").hide(); });';
}
?>
$("#hit").click(function() { $(".hentry").not(".label-hit").parent("div").hide(); });
});
</script>
[site-socialshare]

А возможно так же сделать для меток?Вывод список меток текущей категории
Не понял вопрос. Мы и получаем список меток из записей текущей категории.