diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php index 6ff21789f8..2c37e97738 100644 --- a/wp-includes/category-template.php +++ b/wp-includes/category-template.php @@ -1,6 +1,6 @@ parent == $id ) { + if ( $category->parent == $id && !in_array($category->term_id, $visited) ) { + $visited[] = $category->term_id; $chain .= $before.$category->term_id.$after; $chain .= get_category_children($category->term_id, $before, $after); } @@ -44,7 +45,7 @@ function get_category_link($category_id) { return apply_filters('category_link', $catlink, $category_id); } -function get_category_parents($id, $link = FALSE, $separator = '/', $nicename = FALSE){ +function get_category_parents($id, $link = FALSE, $separator = '/', $nicename = FALSE, $visited = array()){ $chain = ''; $parent = &get_category($id); if ( is_wp_error( $parent ) ) @@ -55,8 +56,10 @@ function get_category_parents($id, $link = FALSE, $separator = '/', $nicename = else $name = $parent->cat_name; - if ( $parent->parent && ($parent->parent != $parent->term_id) ) - $chain .= get_category_parents($parent->parent, $link, $separator, $nicename); + if ( $parent->parent && ($parent->parent != $parent->term_id) && !in_array($parent->parent, $visited) ) { + $visited[] = $parent->parent; + $chain .= get_category_parents($parent->parent, $link, $separator, $nicename, $visited); + } if ( $link ) $chain .= 'cat_name) . '">'.$name.'' . $separator;