На главной странице (index.php) идёт циклический вывод постов с указанием категорий к которой они относяться. Так вот стало нужно помимо имени категории выводить ещё и общее количество постов в ней.
Т.е. должно было получиться примерно так:
- Заголовок материала - категория 1 (5)
- Текст материала
- Заголовок материала - категория 2 (2)
- Текст материала
- Заголовок материала - категория 3 (10)
- Текст материала
Написал я такую функцию
function post_in_cat($mat_id) {
global $wpdb;
$taxonomys = $wpdb->get_results("SELECT * FROM $wpdb->term_relationships WHERE `object_id` = '$mat_id'");
foreach ($taxonomys as $v) { $tmp[] = $v->term_taxonomy_id; }
$taxonomys_str = implode(',', $tmp);
$numposts = $wpdb->get_var("SELECT `count` FROM $wpdb->term_taxonomy WHERE `taxonomy` = 'category' AND `term_taxonomy_id` IN ($taxonomys_str)");
if (0 < $numposts) $numposts = number_format($numposts);
return $numposts;
}
Функцию сохраняете в файл functions.php вашей темы. Сообщаете функции ID материала, в ответ получаете количество материалов в категории в которой он находитя. Да, функция лишена всякого изящества, но главное - РАБОТАЕТ :)
Как использовать
Находим место куда вы хотите вставить количество постов. В моё случае это было после вывода заголовка категории ( the_category(', ') ; ).
И вызываем нашу функцию ( echo post_in_cat($post->ID); )
И будет вам счастье.
З.Ы. Работает в wordpress версии 2.3.1