简体   繁体   English

如何显示 wordpress 类别(包括子类别)中的帖子数量?

[英]How to display number of posts in wordpress category including subcategories?

While listing category, I want to show how many posts are there including subcategories.在列出类别时,我想显示有多少帖子,包括子类别。 I tried this:我试过这个:

$cat_parent_ID = isset( $cat_id->category_parent ) ? $cat_id->category_parent : '';

            if ($cat_parent_ID == 0) {

                $tag = $cat_id;

            } else {

                $tag = $cat_parent_ID;

            }
$q = new WP_Query( array(
                    'nopaging' => true,
                    'tax_query' => array(
                        array(
                            'taxonomy' => 'category',
                            'field' => 'id',
                            'terms' => $tag,
                            'include_children' => true,
                        ),
                    ),
                    'fields' => 'ids',
                ) );
                $allPosts = $q->post_count;

                echo $allPosts;
            ?>

            <?php _e( 'posts found', 'agrg' ); ?>

The above works fine if category has no childs.如果类别没有孩子,则上述工作正常。 But if I click on category which has subcategories, I see 0 posts found even if there are posts, but all of them are in subcategory (so 0 posts in parent category but some posts in subcategory)但是,如果我单击具有子类别的类别,即使有帖子,我也会看到0 posts found帖子,但所有帖子都在子类别中(因此父类别中有 0 个帖子,但子类别中有一些帖子)

Where did I go wrong and what should I change?我哪里出错了,我应该改变什么?

Try using this function:尝试使用此功能:

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;
}

this function will return total post counts from the specified category and its child categories (if any), just by passing the category id.此函数将返回指定类别及其子类别(如果有)的总帖子数,只需传递类别 ID。 i hope it works for you, thanks..我希望它对你有用,谢谢..

function wt_get_category_count($input = '') {
global $wpdb;
if($input == '')
{
    $category = get_the_category();
    return $category[0]->category_count;
}
elseif(is_numeric($input))
{
    $SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input";
    return $wpdb->get_var($SQL);
}
else
{
    $SQL = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug='$input'";
    return $wpdb->get_var($SQL);
}
}

You can echo this in your HTML file by您可以通过以下方式在 HTML 文件中回显

<p><?php echo wt_get_category_count();?></p>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM