четверг, декабря 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

4 комментария:

dim комментирует...

тоже усиленно искал, функция есть родная:
< ? php wp_list_cats('optioncount=1'); ? >

... (пробелы для понятно зачем)

Анонимный комментирует...

Да, отлично всё работает. Спасибо тебе!

Анонимный комментирует...

Да, отлично всё работает. Спасибо тебе!

Анонимный комментирует...

growthis an important element of achieving
success and being happy. Not everyone who has evolved has
achieved success, [b]but everyone who has achieved success
[url=https://coachszkolenia.wordpress.com/]coaching[/url] has
developed and done a lot of work on themselves. [/b]
Personal development is on the one hand my way of life,
but also my passion and idea for living life.