В одном из своих блогов я захотел рядом в ссылкой на опубликованные в ней посты показывать еще и их количество. Казалось бы, что проще – нужно воспользоваться стандартной функцией отображения категорий с количеством в качестве параметра wp_list_cats(‘optioncount=1’). Однако загвоздка заключается в том, что я хочу для этой самой циферки, которая выводится рядом с названием категории, сделать свое оформление – во-первых, чтобы она была без скобок, а во-вторых хочу, чтобы у нее был другой цвет, другой шрифт, да и вообще, хотелось бы задать для нее свой класс оформления. Покопавшись по своим закромам, я понял, что задача не настолько тривиальная, как кажется на первый взгляд. Тем не менее способ был найден.
И так, напомню, что вывести список категорий с количеством постов, в них опубликованных, легко:
</pre> <p>Нам же нужно вывести цифры со своим своим оформлением. Делается это так:</p> <pre><span class=""> 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'"); ?> </span>
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'"); ?> записей
Вроде бы решил проблему.
Спасибо! А как в том же блоге офигительно сделано теги (выпадающее меню с количеством постов). Напишите статейку? Это адаптация Rounded Tag Cloud?
Посмотрите в сторону Cleaner Tags – https://n-wp.ru/kak-vyivesti-samyie-populyarnyie-tegi-cleaner-tags/ .
Здравствуйте, а этот код считает кол-во постов с дочерними рубриками?
По идее да, вместе с дочерними категориями.
Или с 2011 года что-то поменялось или не работает с вложенностью категорий от 2-х.
видимо код пропал после переезда на новый плагин подсветки кода) я вижу только пустую запись ( как раз нуужно было вывести количество записей в одной из категорий
Спасибо за наблюдательность! Исправил.
Огромное спасибо за пост, данный код отдельно(т.е по частям) работает, но столкнулся с проблемой внедрения в меню(проблемы в WordPress 3, когда используется свое меню).
Итак, как обернуть вывод категорий wp_list_cats(”); или функцию в шаблоне виджета? Покажите код полностью.
Что делать, если используется 3 версия Вордпресса со своим созданным меню, там вообще нельзя вывести количество постов.
Интересно также к ссылкам прикрепить не вывод количества постов, а текст, например, имеем категорию Nokia, к ссылке анкору Nokia также сверху через sup – прописать новинки! Получится типа Nokia^Новинки
Здравствуйте. Подскажите как подсчитать количество постов с условием фильтра категория и метка. Нужно именно с помощью $wpdb, чтобы сократить количество запросов.