Make WordPress Core

Opened 20 years ago

Closed 19 years ago

Last modified 3 years ago

#3460 closed defect (bug) (wontfix)

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: Focuses:

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 (1)

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

Download all attachments as: .zip

Change History (7)

#1 @markjaquith
20 years ago

  • Milestone 2.12.0.7
  • Owner changed from anonymous to markjaquith
  • Status newassigned

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);
	}

#2 @markjaquith
20 years ago

  • Milestone 2.0.72.0.8

#3 @markjaquith
20 years ago

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.

#4 @foolswisdom
20 years ago

  • Milestone 2.0.102.0.11

#5 @foolswisdom
19 years ago

  • Milestone 2.0.112.0.eventually

#6 @Nazgul
19 years ago

  • Milestone 2.0.eventually
  • Resolutionwontfix
  • Status assignedclosed

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.