Решаем задачу вывода суммарного количества статей во всех дочерних категориях 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.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вы можете использовать эти HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>