欢迎光临 WordPress 智库!

获取 WordPress 中某个分类中的文章数量的方法

获取 WordPress 中某个分类中的文章数量的方法

获取 WordPress 中某个分类中的文章数量的方法

在 WordPress 数据库中,分类项目是有所属于该分类的文章数量这一项数据的,可是 WordPress 并没有为我们提供获取这个文章数量的函数。在开发 WordPress 主题或应用的时候,我们偶尔会用到这个数据,下面有两种获取某个分类中的文章数量的方法,有需要的朋友可以根据自己的喜好选用。

直接通过 SQL 查询的方法获取

这种方法是通过 SQL 查询直接获取的,获取到的数据只有该分类下的文章的数量,相对下面的方法来说,要简介一点。

function wizhi_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);
    }
}

通过新建 WP_Query 查询的方法获取

这种方法是用了 WordPress 标准的自定义查询方法,获取的数据是该分类下所有文章的对象,有很多不必要的数据,性能上要比上面的方法稍差一点,但是代码更有 WordPress 风格,不会因为 WordPress 数据结构的更改而造成兼容性问题。

if ( ! function_exists( 'wizhi_get_category_count' ) ) :
function wizhi_get_category_count( $cat_id ) {
    $q = new WP_Query( array(
        'nopaging' => true,
        'tax_query' => array(
            array(
                'taxonomy' => 'category',
                'field' => 'id',
                'terms' => $cat_id,
                'include_children' => true,
            ),
        ),
        'fields' => 'ids',
    ) );
    return $q->post_count;
}
endif;

注意:这两种方法获取出来的数据是一样的,采用其中的任意一种就可以了。

本站提供 WordPress 主题定制开发服务

本站长期承接 WordPress 主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有 8 年 WordPress 开发经验,如果你想 用 WordPress 开发网站, 请联系 QQ: 470266798,或邮箱: 4626395@gmail.com 咨询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*