From 100ed8a62d7811a035f2b8f5da9de08b99a2b8e4 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 9 Jul 2008 04:57:18 +0000 Subject: [PATCH] Prevent category looping. Props tellyworth. fixes #7267 git-svn-id: http://svn.automattic.com/wordpress/trunk@8299 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/category-template.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php index 6ff21789f..2c37e9773 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;