PHP wordpress 获取类别对象的多维数组

SIn*_*dhu 3 php wordpress categories

我试图将我的 wordpress 上的所有类别作为类别类型对象的层次结构多维数组。wordpress 中有 2 个函数可以做我想做的事,但不完全是:

1) get_categories() - 这个确实返回了一个类别对象数组,这很好,但该数组是一个平面数组,其中没有区分哪个类别是父类别或哪个类别是子类别。

2) wp_list_categories() - 它可以返回具有完整层次结构的类别,但问题是返回值是html,我需要类别仍然是对象。

例如,如果我有以下 3 棵树作为我的无父类别:

/*
tree_stump

tree1
    branch1

tree2
    branch2
        twig2
            leaves2
            flowers2
            fruits2
*/
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得一个可能类似于以下内容的返回值:

$cat_tree=array( 1=>$tree_stump,2=>array(1=>$tree1,2=>$branch1),3=>array(1=>$tree2,2=>array(1=>$branch2,2=>array($twig2,$leaves2,$flowers2,$fruits2  ) ) ) );
Run Code Online (Sandbox Code Playgroud)

其中 multi dim 数组的每个成员仍然是一个对象,并且在所有子数组中,第一个是其余成员的父级。我想这需要一些递归的东西 - 让我紧张的东西!

不确定我是否有道理,如果我需要更清楚,请告诉我..感谢阅读。

小智 5

这是我的版本,它假定 $categories 是 get_categories() 的输出,但它们的顺序无关紧要。

$cats_tree = get_cat_tree(0,$categories);
function get_cat_tree($parent,$categories) {
    $result = array();
    foreach($categories as $category){
        if ($parent == $category->category_parent) {
            $category->children = get_cat_tree($category->cat_ID,$categories);
            $result[] = $category;
        }
    }
    return $result;
}
Run Code Online (Sandbox Code Playgroud)