我正在尝试将我的 wordpress 上的所有类别作为类别类型对象的分层多维数组。 wordpress 中有 2 个函数可以满足我的要求,但不完全是:
1) get_categories() - 这个确实返回类别对象数组,这很好,但是数组是扁平的,其中没有区分哪个类别是父类别或哪个类别是子类别。
2) wp_list_categories() - 它可以完整地返回类别,但问题是返回值是 html,我需要类别仍然是对象。
例如,如果我有以下 3 棵树作为我的无父类别:
/*
tree_stump
tree1
branch1
tree2
branch2
twig2
leaves2
flowers2
fruits2
*/
我正在尝试获取可能类似于以下内容的返回值:
$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 ) ) ) );
其中 multi dim 数组的每个成员仍然是一个对象,并且在所有子数组中,第一个是其余成员的父级。我想这需要一些递归的东西——让我紧张的东西!
不确定我是否有道理,如果我需要更清楚,请告诉我.. 感谢阅读。
最佳答案
这是我的版本,假设 $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;
}
关于PHP wordpress 获取类别对象的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865207/