作者:银杰声群当_993 | 来源:互联网 | 2014-05-16 09:58
今天在自定义wordpress主题时发生这个问题,而自己翻阅了官方的函数,也没有get_category_children这个函数的详解,特摘录下来。functionmy_get_category_children($id'',$linktrue,$separator'/',$visitedarr
今天在自定义wordpress主题时发生这个问题,而自己翻阅了官方的函数,也没有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 .= ''.$category_name.''.$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。