Как вывести количество опубликованных постов в определенной категории

Как вывести количество опубликованных постов в определенной категории | n-wp.ru

В одном из своих блогов я захотел рядом в ссылкой на опубликованные в ней посты показывать еще и их количество. Казалось бы, что проще – нужно воспользоваться стандартной функцией отображения категорий с количеством в качестве параметра wp_list_cats(‘optioncount=1’). Однако загвоздка заключается в том, что я хочу для этой самой циферки, которая выводится рядом с названием категории, сделать свое оформление – во-первых, чтобы она была без скобок, а во-вторых хочу, чтобы у нее был другой цвет, другой шрифт, да и вообще, хотелось бы задать для нее свой класс оформления. Покопавшись по своим закромам, я понял, что задача не настолько тривиальная, как кажется на первый взгляд. Тем не менее способ был найден.

Как вывести количество опубликованных постов в определенной категории

И так, напомню, что вывести список категорий с количеством постов, в них опубликованных, легко:


Нам же нужно вывести цифры со своим своим оформлением. Делается это так:


get_var("SELECT COUNT(*) FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = '10' AND post_type = 'post' AND post_status = 'publish'"); ?>

cat_number – это класс, оформление которого можно задать в style.php
term_taxonomy.term_id = ’10’ – это ID категории, количество постов в которой нужно выводить

Этот код можно вставлять вне поста. Если же нужно этот код присовокупить к выводу постов из определенной категории (например, вывести на странице категории надпись “В категории XXX опубликовано YYY записей”), то можно конкретный ID заменить на текущую категорию:

В категории 
опубликовано get_var("SELECT COUNT(*) FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id = '$cat' AND post_type = 'post' AND post_status = 'publish'"); ?> записей

Вроде бы решил проблему.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

9 Комментарии

  1. Спасибо! А как в том же блоге офигительно сделано теги (выпадающее меню с количеством постов). Напишите статейку? Это адаптация Rounded Tag Cloud?

  2. видимо код пропал после переезда на новый плагин подсветки кода) я вижу только пустую запись ( как раз нуужно было вывести количество записей в одной из категорий

  3. Огромное спасибо за пост, данный код отдельно(т.е по частям) работает, но столкнулся с проблемой внедрения в меню(проблемы в WordPress 3, когда используется свое меню).

    Итак, как обернуть вывод категорий wp_list_cats(”); или функцию в шаблоне виджета? Покажите код полностью.

    Что делать, если используется 3 версия Вордпресса со своим созданным меню, там вообще нельзя вывести количество постов.

    Интересно также к ссылкам прикрепить не вывод количества постов, а текст, например, имеем категорию Nokia, к ссылке анкору Nokia также сверху через sup – прописать новинки! Получится типа Nokia^Новинки

  4. Здравствуйте. Подскажите как подсчитать количество постов с условием фильтра категория и метка. Нужно именно с помощью $wpdb, чтобы сократить количество запросов.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*