Количество статей в категории

Выводим количество статей в категории.

Один из блоков кода, который входит в топ «самые полезные сниппеты WordPress». Используется часто, особенно раньше.

// $ID заменяем на ID нужной категории с кавычками, например: '38'

<?php 
$cat_count = get_category($ID);
echo $cat_count->count; 
?>

Например, что если мы хотим показать количество постов в категории в главном навигационном меню, как на рисунке:

Количество статей в категории

Для отображения количества статей категории в главном меню, добавляем следующий код в файл функций functions.php вашей темы:

add_filter('the_title', 'digapp_number_posts_the_title', 10, 2);
function digapp_number_posts_the_title($title, $post_ID)
    {
        if( 'nav_menu_item' == get_post_type($post_ID) )
    {
        if( 'taxonomy' == get_post_meta($post_ID, '_menu_item_type', true) && 'category' == get_post_meta($post_ID, '_menu_item_object', true) ){
            $category = get_category( get_post_meta($post_ID, '_menu_item_object_id', true) );
            $title .= sprintf('<sup class="posts-number">%d</sup>', $category->count);
        }
    }
    return $title;
}

Рекомендую установить дочернюю тему перед добавлением кода.

Суммарное количество статей

Решаем задачу вывода суммарного количества статей во всех дочерних категориях WordPress на фронтенд.

На отдельном клиентском сайте была небольшая задача вывода количества статей в сумме по всем дочерним категориям одного родителя.

Предположим у нас такая иерархия:

Cars-1 (всего статей — 0)
Cars-2 (всего статей — 4)
Cars-3 (всего статей — 3)
Cars-4 (всего статей — 3)

Нужно было показать сколько всего статей содержит Cars-1 включая Cars-2, Cars-3, Cars-4. Т.е. на выходе мы должны получить 10.

Это делается с использованием небольшой функции, которую можно добавить в functions.php и потом использовать где нужно на сайте:

function wp_get_cat_postcount($id) {
    $cat = get_category($id);
    $count = (int) $cat->count;
    $taxonomy = 'category';
    $args = array(
        'child_of' => $id,
    );
    $tax_terms = get_terms($taxonomy,$args);
    foreach ($tax_terms as $tax_term) {
        $count +=$tax_term->count;
    }

    return $count;
}

Теперь, в нужном месте нашего сайта мы добавляем такую строчку:

<?php echo wp_get_cat_postcount('1'); ?>

Мы указали ID рубрики ‘1’ и теперь у нас выведется количество статей во всех подкатегориях родителя.

Эту строчку можно вставить в любой файл темы, где вам нужно, например, index.php или archive.php.

Была ли эта страница полезной?