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

Как вывести количество опубликованных постов в определенной категории | 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

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. IvanMazepa

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

    Ответить
    1. Посмотрите в сторону Cleaner Tags — http://n-wp.ru/4364 .

      Ответить
  2. Евгений

    Здравствуйте, а этот код считает кол-во постов с дочерними рубриками?

    Ответить
    1. По идее да, вместе с дочерними категориями.

      Ответить
      1. Дмитрий

        Или с 2011 года что-то поменялось или не работает с вложенностью категорий от 2-х.

        Ответить
  3. Yury

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

    Ответить
    1. Спасибо за наблюдательность! Исправил.

      Ответить
  4. PSP

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

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

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

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

    Ответить
  5. Дмитрий

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

    Ответить