Вообщем нужно чтоб на странице каждой рубрики выводился список тегов определенной рубрики.
То есть если мы находимся на странице рубрики под названием "Природа" - должны отображаться все теги (метки) из этой рубрики. А если мы находимся на странице рубрики под названием "Машины" - по аналогии с выше, только не должны видеть метки из других категорий.
Я нашел вот такое решение: Этот код вставляется в functions.php
// Получаем ID таксономии выбранной категории и по нему получаем все посты
$keengo_category = $args['category'];
$keengo_term_taxonomy_id = $wpdb->get_var("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = $keengo_category AND taxonomy = 'category' ");
$keengo_posts = $wpdb->get_results("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = $keengo_term_taxonomy_id ", ARRAY_A);
// Преобразовываем полученные ID постов в строку
$keengo_post_IDs_array = array();
foreach ( $keengo_posts as $keengo_post ) {
$keengo_post_IDs_array[] = $keengo_post['object_id'];
}
$keengo_post_IDs = implode(',', $keengo_post_IDs_array);
// Получаем список тегов для выбранных из категории постов
$keengo_metas_array = $wpdb->get_results("SELECT term_taxonomy_id, count(object_id) FROM $wpdb->term_relationships WHERE object_id IN ($keengo_post_IDs) GROUP BY term_taxonomy_id ", ARRAY_A);
$keengo_metas = array();
$count_max = 0;
$count_min = 1000000;
// Для каждлго тега находим название, ссылку, количество
foreach ( $keengo_metas_array as $meta_key => $keengo_meta ) {
$keengo_meta_term_taxonomy_id = $keengo_meta['term_taxonomy_id'];
$keengo_taxonomy = $wpdb->get_var("SELECT taxonomy FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = $keengo_meta_term_taxonomy_id ");
if ( $keengo_taxonomy == 'post_tag' ) {
$keengo_term_id = $wpdb->get_var("SELECT term_id FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = $keengo_meta_term_taxonomy_id ");
$keengo_term_name = $wpdb->get_var("SELECT name FROM $wpdb->terms WHERE term_id = $keengo_term_id ");
$keengo_metas[$keengo_term_name]['link'] = get_tag_link($keengo_term_id);
$keengo_metas[$keengo_term_name]['count'] = $keengo_meta['count(object_id)'];
А этим кодом мы собственно и выводим метки определенной рубрики, которую указываем
PHP код:
,'category' => 5
Но почему то у меня показывается метки определенной рубрики во всех категориях... ---------------------------------------HELPPP------------------------------------------------
Gann, как ее добавить ?) я уже сообразил что надо нечто такое дописать elseif ( is_category('2') ) : но как правильно вставить это я хз, я в функциях дудуду
первый вариант, - ошибка 500, где то что то не так.. Второй упрощенный вариант, не работает, но уже нету 500 ошибки. Мб я не туда тыкаю сам код ? Я его вставляю перед
PHP код:
<h1 class="archive-title"> <?php if ( is_category() ) : single_cat_title();
elseif ( is_tag() ) : single_tag_title(); ......
То есть по сути я вывожу просто в файле archives.php, но почему то не срабатывает проверка с id (
Gann, Радости полные штаны ))) огромное спасибо, я кстати методом тыка исключил из названия каждой метки определенное слово (чтоб не спамить), мб подсказать если нужно ?
Теперь получается надо натыкать таких кодов для каждой рубрики ?