如何获取类别子类别的深度

时间:2013-10-02 作者:pdme

我正在寻找一个类别的子类别的深度。

假设我有一个类别“祖父母”,它有一个子类别“父母”,而父类别又有一个子类别“孩子”。如何得到整数2?

我想我可以检查“祖父母”是否有子类别,如果有,检查他们是否有子类别,等等,直到我达到0。但这似乎是很多不必要的处理。

难道没有更优雅的方式吗?

1 个回复
SO网友:tfrommen

我会这样做:

获取all 子类别(包括空,分层设置)作为数组检索PHP中数组的深度(这部分是taken (but adapted) from here)总之,以下代码被捆绑到一个函数中,但当然可以直接在模板文件中的某个位置使用:

function get_category_depth($id = 0) {
    $args = array(
        \'child_of\' => $id,
        \'hide_empty\' => 0,
        \'hierarchical\' => 1,
    );
    $categories = get_categories($args)

    if (empty($categories))
        return 0;

    $depth = 1;
    $lines = explode("\\n", print_r($categories, true));

    foreach ($lines as $line)
        $depth = max(
            $depth,
            (strlen($line) - strlen(ltrim($line))) / 4
        );

    return ceil(($depth - 1) / 2) + 1;
} // function get_category_depth
请注意,我没有对此进行测试。

结束

相关推荐

使用特定Single.php模板在Custom Taxonomy下创建术语

昨天一些很棒的人帮我解决了这个问题templates for custom taxonomy terms. 现在我有一个相关的问题。同样,我在函数中设置了一个自定义的post类型。php称为“研究”我有一个叫做“分类”的自定义分类法根据该分类法,我有以下术语:oldresearch(父项)--子项1---子项2我需要在这个术语“旧研究”下的所有单页和子目录中使用一个模板。我已经有一项研究了。其他地方正在使用的php。所以这不是我的首选。有什么想法吗?请详细说明,因为我是PHP新手-抱歉。哈哈,提前谢谢!