Показаны сообщения с ярлыком wordpress. Показать все сообщения
Показаны сообщения с ярлыком wordpress. Показать все сообщения

четверг, декабря 13, 2007

Wordpress :: количество постов в категории

Вчера в одном из проектов возникла необходимость сделать одну штуку для wordpress.
На главной странице (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