Opened 13 months ago
Closed 8 months ago
#20447 closed defect (bug) (fixed)
wp_delete_user( int, $user_id ) does not flush post caches
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Priority: | normal | Milestone: | 3.5 |
| Component: | Cache | Version: | 3.0 |
| Severity: | normal | Keywords: | has-patch |
| Cc: | kpayne@… |
Description
Calling wp_delete_post( 2456, 1 ) does not flush the caches for the re-assigned posts. For example:
// assuming post 123 has an author of 2 $post = get_post( 123 ); wp_delete_user( $post->post_author, 1 ); $post = get_post( 123 ); $post->post_author; // this is "2", should be "1"
This is because clean_post_cache is not called on the reassigned posts (see http://core.trac.wordpress.org/browser/trunk/wp-admin/includes/user.php#L259).
The best way around this I can see is get the post IDs and called wp_update_post() to let code hook in to update stuff where necessary. If performance is an issue (s wp_update_post can be slow), then I think it should at least get all the post IDs and call clean_post_cache on them.
Attachments (2)
Change History (10)
- Summary changed from wp_delete_post( int, $user_id ) does not flush post caches to wp_delete_user( int, $user_id ) does not flush post caches
- Keywords needs-patch added
- Version changed from 3.4 to 3.0
Definitely not new — setting to an earlier version.
- Milestone changed from Awaiting Review to 3.5
Not sure I'd mind if we just clear the post cache here, rather than switching to use the API. That's a painful update to run across a lot of posts individually.
Replying to nacin:
Not sure I'd mind if we just clear the post cache here, rather than switching to use the API. That's a painful update to run across a lot of posts individually.
Agreed. Patch updated.

Should definitely use wp_update_post() instead of just $wpdb->update().