乌徒帮技术范儿WordPressWordPress内核 › get_category_children根据分类ID获取子分类

get_category_children根据分类ID获取子分类

分类:WordPress内核

今天在制作wordpress主题时发生这个问题,而自己翻阅了官方的函数,也没有get_category_children这个函数的详解,特摘录下来,请看原文:http://wpseek.com/get_category_children/ 源码如下 wp-includes/deprecated.php

wordpress官方没有该函数的详解,让我在使用时也很头疼,而上述的链接是网络上最“权威的”了,却也存在问题,文章说returns->string,我测试的最终结果确实是字串,却是用子分类的ID组成的字串,让我头疼不已,所以我根据这个函数的源代码写了自己的函数MY_get_category_children。

function MY_get_category_children($id = '',$link = true,$separator = '/',$visited = array()){
_deprecated_function( __FUNCTION__, '2.8', 'get_term_children()' );
global $cat;
if($id == '')$id = $cat;
$chain = '';
/** TODO: consult hierarchy */
$cat_ids = get_all_category_ids();
foreach ( (array) $cat_ids as $cat_id ) {
if ( $cat_id == $id )continue;
$category = get_category( $cat_id );
if ( is_wp_error( $category ) )return $category;
if ( $category->parent == $id && !in_array( $category->term_id, $visited ) ) {
$visited[] = $category->term_id;
$category_id = $category->term_id;
$category_name = $category->name;
$category_link = get_category_link( $category_id );
if($link) $chain .= '<a href="'.$category_link.'">'.$category_name.'</a>'.$separator;
else $chain .= $category_name.$separator;
$chain .= MY_get_category_children( $category_id,$link,$separator,$visited );
}
}
return $chain;
}
function MY_the_category_children($id = '',$link = true,$separator = '/',$visited = array()){
echo MY_get_category_children($id,$link,$separator,$visited);
}

函数两个,第一个是返回数据,第二个是显示出来。函数有四个参数,$id及目前这个分类的ID,函数根据这个ID找出该分类下的子分类,并最终返回带有分类名称的结果。$link是否连接到分类地址,$separator每个分类之后用什么连接,因为我自己主题的需求,我只为函数设置的在每个分类后面的连接符,你可以熟悉函数后自己修改。$visited在函数运行中起到一个标记性的作用,同时,你也可以传入值,以排除某些子分类,注意该参数是数组,数组元素是分类的ID。

填写个人信息,赶快回复吧!