我想在帖子中显示所有子类别。目前,我可以列出帖子类别,但不能列出该类别中的所有子类别。
我试过了:
print_r (get_categories(array('child_of' => 2)));
但该功能仅显示帖子的类别,而不是所有子类别。
Wordpress函数中是否有函数可以获取所有子项以及类别?
答案 0 :(得分:1)
get_categories
应该返回子类别,所以如果你没有得到任何类别我怀疑它是因为它们是空的(默认情况下get_categories
只返回有与之关联的帖子的类别)。
根据您的需要,有几种方法可以获取所有类别:
<强> 1。获取类别和子女的完整列表
通过将“hide_empty”设置为0,您可以使用get_categories
将所有类别和子类别返回到数组,即使它们没有帖子:
$cat_id = 2; // category id to get (for ALL categories, change to 0 or remove from arg array)
$categories = get_categories(array("child_of" => $cat_id, "hide_empty" => 0));
// print all category names
foreach ($categories as $category)
echo $category->name;
返回值 :返回包含所有类别和子类别的数组。请注意,这是没有一个雇佣结构,即父母和子女都处于同一级别
<强> 2。显示包含存档页面链接的分层列表
wp_list_categories
会将所有类别和子项作为列表返回,并包含指向存档页面的链接。
$cat_id = 2; // category id to get (for ALL categories, change to 0 or remove from arg array)
$categories = wp_list_categories(array("child_of" => $cat_id, "echo" => 1, "hide_empty" => 0));
echo $categories;
如果hide_empty
为1,则只会返回包含帖子的类别,因此请将其设置为0以返回所有类别。
还有许多其他参数,包括“深度”指定要返回的级别,以及“orderby”指定顺序。见Developer Reference
返回值 :所有类别的分层ul
无序列表的html,其子类别嵌套在其父级下。所有类别都按名称显示,并带有类别存档页面的链接。
第3。获取类别对象的分层数组
我编写了以下函数,该函数使用递归来获取所有类别/分类术语的多维数组,其中子项嵌套在父项下。
<强> 参数:的强>
$catId
如果您想获取特定类别的孩子,请传递类别ID。对于所有类别,请使用0 $taxonomy
将分类名称作为第二个参数传递。默认为“category”$bEchoList
如果要将类别/术语名称打印为分层无序列表,请将true
作为最后一个参数传递。功能:
function getCategoryHierarchy($catId=0, $taxonomy="category", $bEchoList = false ){
$args = array(
"hide_empty" => 0,
"hierarchical" => 1,
"taxonomy"=> $taxonomy,
"parent" => $catId
);
$categories = get_categories($args);
if(count($categories) > 0){
if ($bEchoList) echo "<ul>";
foreach ($categories as $category) {
if ($bEchoList)
echo "<li>".$category->cat_name."</li>";
$cats[$category->cat_ID]["category"] = $category;
$children = getCategoryHierarchy($category->cat_ID, $taxonomy, $bEchoList );
if ($children)
$cats[$category->cat_ID]["children"] = $children;
}
if ($bEchoList) echo "</ul>";
}
return $cats;
}
$cat_id = 2; // category id to get (for ALL categories, change to 0 or remove from parameters)
$categories = getCategoryHierarchy($cat_id, "category", true );
返回值 :返回包含所有类别/分类词和子项的分层数组。它们是分层嵌套的,类别id作为数组。
每个类别数组都有2个“子阵列”
返回数组结构:
[*CATID*] => Array(
[category] => WP_Term Object(...)
[children] => Array(
[*CATID*] => Array(
[category] => WP_Term Object(...)
[children] => Array(
[*CATID*] => Array(
[category] => WP_Term Object(...)
)
)
[more children...]
)
)
[*CATID*] => Array(
[category] => WP_Term Object(...)
)
[more categories...]