Ticket #3460 (closed defect (bug): wontfix)

Opened 5 years ago

Last modified 4 years ago

Duplicated default category after deleting a category

Reported by: zhouqb Owned by: markjaquith
Priority: normal Milestone:
Component: Administration Version: 2.0.5
Severity: normal Keywords: category
Cc: zhouqb@…

Description

If a category is deleted, all the posts under it will be assigned the default category.

A better approach is checking if it has been assigned another category. If yes, don't apply the default category - that's meaningless.

A real bug is, if the post was assigned both the deleted category and the default, the default will be assigned once more, resulting in two identical rows (except rel_id column) in the wp_post2cat table. Also the fix is adding a check, but following the approach above will avoid such situation.

Attachments

add_to_default_cat_posts_that_only_exist_in_deleted_cat.diff Download (2.0 KB) - added by markjaquith 5 years ago.
Patch for 2.0.x

Change History

  • Owner changed from anonymous to markjaquith
  • Status changed from new to assigned
  • Milestone changed from 2.1 to 2.0.7

This has been fixed for 2.1

Possible 2.0.7 milestone.

Here is the 2.1 code, for reference:

	// Only set posts and links to the default category if they're not in another category already.
	$default_cat = get_option('default_category');
	$posts = $wpdb->get_col("SELECT post_id FROM $wpdb->post2cat WHERE category_id='$cat_ID'");
	if ( is_array($posts) ) foreach ($posts as $post_id) {
		$cats = wp_get_post_categories($post_id);
		if ( 1 == count($cats) )
			$cats = array($default_cat);
		else
			$cats = array_diff($cats, array($cat_ID));
		wp_set_post_categories($post_id, $cats);
	}
  • Milestone changed from 2.0.7 to 2.0.8

The functions used to do it in 2.1 (wp_get_post_categories() and wp_set_post_categories() don't exist in 2.0.x

I've attached a patch that should do the equivalent in 2.0.x, but I'd like to save it for another milestone. It's not quite ideal, because it causes one query per post that existed in the category you're deleting.

  • Milestone changed from 2.0.10 to 2.0.11
  • Milestone changed from 2.0.11 to 2.0.eventually
  • Status changed from assigned to closed
  • Resolution set to wontfix
  • Milestone 2.0.eventually deleted

Closing as wontfix for the 2.0 branch.

MarkJaquith has stated that only security fixes can go into the 2.0 branch.

Note: See TracTickets for help on using tickets.