Changeset 5533
- Timestamp:
- 05/23/2007 10:03:24 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/admin-db.php
r5528 r5533 151 151 152 152 $cat_ID = (int) $cat_ID; 153 $default_cat = get_option('default_category'); 154 $default_link_cat = get_option('default_link_category'); 155 156 // Don't delete either of the default cats 157 if ( $cat_ID == $default_cat || $cat_ID == $default_link_cat ) 158 return 0; 159 160 $category = get_category($cat_ID); 161 162 $parent = $category->category_parent; 163 164 // Delete the category if it is not also a tag. 165 if ( 0 == ($category->type & TAXONOMY_TAG) ) { 166 if ( !$wpdb->query("DELETE FROM $wpdb->categories WHERE cat_ID = '$cat_ID'") ) 167 return 0; 168 } else { 169 $wpdb->query("UPDATE $wpdb->categories SET type = type & ~" . TAXONOMY_CATEGORY . " WHERE cat_ID = '$cat_ID'"); 170 } 171 // Update children to point to new parent 172 $wpdb->query("UPDATE $wpdb->categories SET category_parent = '$parent' WHERE category_parent = '$cat_ID'"); 173 174 // Only set posts and links to the default category if they're not in another category already 175 $posts = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE category_id='$cat_ID' AND rel_type = 'category'"); 176 foreach ( (array) $posts as $post_id ) { 177 $cats = wp_get_post_categories($post_id); 178 if ( 1 == count($cats) ) 179 $cats = array($default_cat); 180 else 181 $cats = array_diff($cats, array($cat_ID)); 182 wp_set_post_categories($post_id, $cats); 183 } 184 185 $links = $wpdb->get_col("SELECT link_id FROM $wpdb->link2cat WHERE category_id='$cat_ID'"); 186 foreach ( (array) $links as $link_id ) { 187 $cats = wp_get_link_cats($link_id); 188 if ( 1 == count($cats) ) 189 $cats = array($default_link_cat); 190 else 191 $cats = array_diff($cats, array($cat_ID)); 192 wp_set_link_cats($link_id, $cats); 193 } 194 195 clean_category_cache($cat_ID); 196 do_action('delete_category', $cat_ID); 197 return 1; 153 $default = get_option('default_category'); 154 155 // Don't delete the default cat 156 if ( $cat_ID == $default ) 157 return 0; 158 159 return wp_delete_term($cat_ID, 'category', "default=$default"); 198 160 } 199 161 -
trunk/wp-includes/taxonomy.php
r5529 r5533 19 19 20 20 return $wp_taxonomies[$taxonomy]; 21 } 22 23 function is_taxonomy_hierarchical($taxonomy) { 24 if ( ! is_taxonomy($taxonomy) ) 25 return false; 26 27 $taxonomy = get_taxonomy($taxonomy); 28 return $taxonomy['hierarchical']; 21 29 } 22 30 … … 99 107 * Removes a term from the database. 100 108 */ 101 function wp_delete_term() {} 109 function wp_delete_term( $term, $taxonomy, $args = array() ) { 110 global $wpdb; 111 112 $term = (int) $term; 113 114 if ( ! $ids = is_term($term, $taxonomy) ) 115 return false; 116 $tt_id = $ids['term_taxonomy_id']; 117 118 $defaults = array(); 119 $args = wp_parse_args($args, $defaults); 120 extract($args); 121 122 if ( isset($default) ) { 123 $default = (int) $default; 124 if ( ! is_term($default, $taxonomy) ) 125 unset($default); 126 } 127 128 // Update children to point to new parent 129 if ( is_taxonomy_hierarchical($taxonomy) ) { 130 $term_obj = get_term($term, $taxonomy); 131 $parent = $term_obj->parent; 132 133 $wpdb->query("UPDATE $wpdb->term_taxonomy SET parent = '$parent' WHERE parent = '$term_obj->term_id' AND taxonomy = '$taxonomy'"); 134 } 135 136 $objects = $wpdb->get_col("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = '$tt_id'"); 137 138 foreach ( (array) $objects as $object ) { 139 $terms = get_object_terms($object, $taxonomy, 'get=ids'); 140 if ( 1 == count($terms) && isset($default) ) 141 $terms = array($default); 142 else 143 $terms = array_diff($terms, array($term)); 144 wp_set_object_terms($object, $terms, $taxonomy); 145 } 146 147 $wpdb->query("DELETE FROM $wpdb->term_taxonomy WHERE term_taxonomy_id = '$tt_id'"); 148 149 //clean_term_cache($term, $taxonomy); 150 do_action("delete_$taxonomy", $term, $tt_id); 151 152 return true; 153 } 102 154 103 155 function wp_update_term( $term, $taxonomy, $args = array() ) {
Note: See TracChangeset
for help on using the changeset viewer.