Вообщем нужно чтоб на странице каждой рубрики выводился список тегов определенной рубрики.
То есть если мы находимся на странице рубрики под названием "Природа" - должны отображаться все теги (метки) из этой рубрики. А если мы находимся на странице рубрики под названием "Машины" - по аналогии с выше, только не должны видеть метки из других категорий.
Я нашел вот такое решение:
Этот код вставляется в functions.phpPHP код:След код вставляем в archive.phpfunction keengo_tag_cloud( $args = '' ) {
// Стандартные параметры функции
$defaults = array(
'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'category' => 1
);
$args = wp_parse_args( $args, $defaults );
global $wpdb;
// Получаем 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)'];
if ( $keengo_meta['count(object_id)'] > $count_max ) {
$count_max = $keengo_meta['count(object_id)'];
}
if ( $keengo_meta['count(object_id)'] < $count_min ) {
$count_min = $keengo_meta['count(object_id)'];
}
}
}
// Сортируем полученный массив
ksort($keengo_metas);
// Формируем вывод тегов с указанием размера шрифта для наглядности
$count_delta = $count_max - $count_min;
$size_min = $args['smallest'];
$size_max = $args['largest'];
$size_delta = $size_max - $size_min;
foreach ( $keengo_metas as $name => $meta ) {
$size = $size_min + $size_delta * ($meta['count'] - $count_min) / $count_delta;
echo('<a href="'.$meta['link'].'" style="font-size: '.$size.$args['unit'].'">'.$name.'</a> ');
}
}
PHP код:А этим кодом мы собственно и выводим метки определенной рубрики, которую указываемif ( function_exists('keengo_tag_cloud') ){
$args = array(
'smallest' => 12
,'largest' => 18
,'unit' => 'px'
,'category' => 5
);
keengo_tag_cloud( $args );
}
PHP код:Но почему то у меня показывается метки определенной рубрики во всех категориях...,'category' => 5
---------------------------------------HELPPP------------------------------------------------
Вывод всех Тегов определенной рубрики на самой странице рубрики
(Ответов: 13, Просмотров: 1101)
- 28.01.2016 18:24
- 28.01.2016 18:31
Inforation, добавьте проверку (если мы находимся в категории с ид=5, то выводим указанный вами код).
п.с. то есть примерно так:
if ( function_exists('keengo_tag_cloud')
if ( is_category('5')){
$args = array(
'smallest' => 12
,'largest' => 18
,'unit' => 'px'
,'category' => 5
);
keengo_tag_cloud( $args );
}Последний раз редактировалось Gann; 28.01.2016 в 18:38.
- 28.01.2016 18:39
Gann, как ее добавить ?) я уже сообразил что надо нечто такое дописать elseif ( is_category('2') ) :
но как правильно вставить это я хз, я в функциях дудуду - 28.01.2016 18:42
Inforation, указал. Попробуйте так.
Я тож так то не особо... наверняка можно упростить по типу if ( function_exists('keengo_tag_cloud') || is_category('5')){ - 28.01.2016 18:50
первый вариант, - ошибка 500, где то что то не так..
Второй упрощенный вариант, не работает, но уже нету 500 ошибки.
Мб я не туда тыкаю сам код ?
Я его вставляю передPHP код:То есть по сути я вывожу просто в файле archives.php, но почему то не срабатывает проверка с id (<h1 class="archive-title">
<?php
if ( is_category() ) :
single_cat_title();
elseif ( is_tag() ) :
single_tag_title();
...... - 28.01.2016 19:34
Inforation, надо перед выводом постов из категории или после. То есть перед <?php if (have_posts()) { ?> или после <?php } //endif; ?>
Почитал тут по условностям, надо использовать AND или &&. Т.е. получается надо вставлять в архиве.пхп:
<?php if ( function_exists('keengo_tag_cloud') && is_category('5')){
$args = array(
'smallest' => 12
,'largest' => 18
,'unit' => 'px'
,'category' => 5
);
keengo_tag_cloud( $args );
}
?>
---------- Сообщение добавлено 18:34 ---------- Предыдущее 18:29 ----------
Воткнул к себе на сайт - всё работает ОК. Так вот и нашли вам решение
Спасибо сказали:
Inforation(28.01.2016), - 28.01.2016 19:59
Gann, Радости полные штаны ))) огромное спасибо, я кстати методом тыка исключил из названия каждой метки определенное слово (чтоб не спамить), мб подсказать если нужно ?
Теперь получается надо натыкать таких кодов для каждой рубрики ? - 28.01.2016 20:14
- 28.01.2016 20:22
- 28.01.2016 20:40
Inforation, попробуйте так:
PHP код:if ( function_exists('keengo_tag_cloud')){
$args = array(
'smallest' => 12
,'largest' => 18
,'unit' => 'px'
);
$args['category'] = get_query_var('cat');
keengo_tag_cloud( $args );
}
Последний раз редактировалось redeyer; 28.01.2016 в 20:53.
Спасибо сказали:
Inforation(29.01.2016),
Тэги топика:
Похожие темы
| Темы | Раздел | Ответов | Последний пост |
|---|---|---|---|
Вывод последней записи из каждой рубрики и принудительный вывод | WordPress | 0 | 20.06.2015 04:46 |
Как сделать меню для определенной рубрики в Wordpress и к постам в ней? | WordPress | 1 | 02.04.2014 17:54 |
Как скрыть записи из определённой рубрики WordPress | WordPress | 4 | 07.05.2013 11:36 |
Запрет к индексации определенной рубрики в WordPress | WordPress | 7 | 11.08.2012 23:46 |
Как скрыть записи из определённой рубрики | Web программирование | 3 | 04.06.2012 16:05 |






