Формируем и выводим список меток текущей категории.
Вариант в файл 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]
А возможно так же сделать для меток?Вывод список меток текущей категории
Не понял вопрос. Мы и получаем список меток из записей текущей категории.