Перечислите все категории и посчитайте количество постов в (WordPress) - PullRequest
0 голосов
/ 10 сентября 2018

Я написал эту функцию, которая почти работает:

function all_animals() {
    $categories = get_categories(array(
        'echo'             => 0,
        'hide_empty'       => 0,
        'taxonomy'         => 'species',
        'hierarchical'     => 1,
        'show_count'       => 0,
        'depth'            => 0
    )); ?>

    <ul>

    <?php ob_start();

    foreach ($categories as $cat) {

        $cat_args = array(
            'posts_per_page'    => -1,
            'post_type'         => 'animal',
            'showposts'         => -1,
            'post_status'       => 'publish',
            'cat'               => $cat->cat_ID
        );
        $the_animals = new WP_Query($cat_args);
        $animal_count = $the_animals->post_count;
        ?>
        <li>
            <a href="<?php echo get_category_link( $cat->cat_ID ); ?>">
                <?php echo $cat->cat_name; ?>
                <span class="count"><?php echo $animal_count; ?></span>
            </a>
        </li>
        <?php 
    } 
    wp_reset_postdata(); 
    $animal_list = ob_get_clean();
    return $animal_list;
    echo '</ul>';
}

... а затем я использую его на шаблоне страницы, например:

echo all_animals();

Проблема: Единственное, что не работает, это $animal_count, который всегда возвращает 0.

Я тоже пробовал это ...

global $wp_query; 
$animal_count = $wp_query->found_posts;

... но это не имело значения.

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Решение оказалось проще, чем я думал:

$animal_count = $the_animals->count;
0 голосов
/ 10 сентября 2018

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

get_category('ID')->category_count

Здесь 'ID - это идентификатор категории

...