返回

如何正确计算 WordPress 分类中的帖子数量?

php

准确计算 WordPress 分类中的帖子数量

问题

在 WordPress 页面上显示分类的帖子数量时,遇到一个问题:子分类的帖子未正确统计到主分类中。

解决方案

要解决这个问题,需要遵循以下步骤:

  1. 使用 get_terms 函数获取所有分类,包括子分类。
  2. 遍历分类并计算每个分类及其子分类的帖子总数。
$args = array(
    'hide_empty' => 0,
);

$categories = get_terms('category', $args);

foreach ($categories as $category) {
    $total_count = $category->count; // 初始化为主分类计数

    $args = array(
        'hide_empty' => 0,
        'parent'     => $category->term_id,
    );

    $subcategories = get_terms('category', $args);

    foreach ($subcategories as $subcategory) {
        $total_count += $subcategory->count; // 添加子分类计数
    }

    echo '<input type="checkbox" data-select="sectionFilter" id="section_' . $category->term_id . '" value="' . $category->term_id . '">';
    echo '<label for="section_' . $category->term_id . '">';
}

通过使用 get_terms 函数,可以获取所有分类,包括子分类。然后,遍历这些分类并计算每个分类及其子分类的帖子总数。

代码示例

下面的代码示例示范了如何正确计算 WordPress 分类中的帖子数量:

$categories = get_categories([
 'hide_empty' => 0,
 'parent'     => 0,
]);
                            
foreach ($categories as $category) {
    $subcategories = get_categories([
        'hide_empty' => 0,
         'parent'     => $category->term_id,
    ]);
                            
$total_count = $category->count; // Initialize with the main category count
                            
foreach ($subcategories as $subcategory) {
    $total_count += $subcategory->count; // Add subcategory counts
}
                            
echo '<input type="checkbox" data-select="sectionFilter" id="section_' . $category->term_id . '" value="' . $category->term_id . '">';
echo '<label for="section_' . $category->term_id . '">';
}

常见问题解答

Q1:为什么使用 hide_empty 参数?
A1:hide_empty 参数可排除没有帖子的分类,避免干扰统计。

Q2:parent 参数如何影响子分类统计?
A2:parent 参数指定要获取子分类的主分类。

Q3:为什么需要遍历子分类?
A3:遍历子分类可以将它们的帖子数量添加到主分类的总计数。

Q4:代码示例中的 $total_count 变量用于什么目的?
A4:$total_count 变量存储了主分类及其所有子分类的帖子总数。

Q5:如何将计数显示在 WordPress 页面上?
A5:使用 echo 语句将 $total_count 变量的值打印到页面上。