diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php index b9d0bb09c..dd6fa4e9a 100644 --- a/wp-admin/admin-functions.php +++ b/wp-admin/admin-functions.php @@ -2,40 +2,45 @@ // Dandy new recursive multiple category stuff. -function cat_rows($parent = 0, $level = 0) { +function cat_rows($parent = 0, $level = 0, $categories = 0) { global $wpdb, $tablecategories, $tablepost2cat, $bgcolor; - $categories = $wpdb->get_results("SELECT * FROM $tablecategories WHERE category_parent = $parent ORDER BY cat_name"); + if (!$categories) { + $categories = $wpdb->get_results("SELECT * FROM $tablecategories ORDER BY cat_name"); + } if ($categories) { foreach ($categories as $category) { - $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); - $pad = str_repeat('— ', $level); + if ($category->category_parent == $parent) { + $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); + $pad = str_repeat('— ', $level); - $bgcolor = ('#eee' == $bgcolor) ? 'none' : '#eee'; - echo "$pad $category->cat_name - $category->category_description - $count - Editcat_name) ."\' and all its posts will go to the default category.\\n \'OK\' to delete, \'Cancel\' to stop.')\" class='delete'>Delete - "; + $bgcolor = ('#eee' == $bgcolor) ? 'none' : '#eee'; + echo "$pad $category->cat_name + $category->category_description + $count + Editcat_name) ."\' and all its posts will go to the default category.\\n \'OK\' to delete, \'Cancel\' to stop.')\" class='delete'>Delete + "; cat_rows($category->cat_ID, $level + 1); + } } } else { return false; } } -function wp_dropdown_cats($currentcat, $currentparent = 0, $parent = 0, $level = 0) { +function wp_dropdown_cats($currentcat, $currentparent = 0, $parent = 0, $level = 0, $categories = 0) { global $wpdb, $tablecategories, $tablepost2cat, $bgcolor; - $categories = $wpdb->get_results("SELECT * FROM $tablecategories WHERE category_parent = $parent ORDER BY cat_name"); + if (!$categories) { + $categories = $wpdb->get_results("SELECT * FROM $tablecategories ORDER BY cat_name"); + } if ($categories) { - foreach ($categories as $category) { if ($currentcat != $category->cat_ID) { + foreach ($categories as $category) { if ($currentcat != $category->cat_ID && $parent == $category->category_parent) { $count = $wpdb->get_var("SELECT COUNT(post_id) FROM $tablepost2cat WHERE category_id = $category->cat_ID"); $pad = str_repeat('– ', $level); echo "\n\t"; - if ($currentcat != $category->cat_ID) - wp_dropdown_cats($currentcat, $currentparent, $category->cat_ID, $level + 1); + wp_dropdown_cats($currentcat, $currentparent, $category->cat_ID, $level + 1, $categories); } } } else { return false;