[wp-trac] [WordPress Trac] #27952: get_blog_details()->post_count Does not subtract deleted posts

WordPress Trac noreply at wordpress.org
Sun Jun 8 20:35:54 UTC 2014

#27952: get_blog_details()->post_count Does not subtract deleted posts
 Reporter:  GSMcNamara                |       Owner:
     Type:  defect (bug)              |      Status:  new
 Priority:  normal                    |   Milestone:  4.0
Component:  Networks and Sites        |     Version:  3.8.1
 Severity:  minor                     |  Resolution:
 Keywords:  good-first-bug has-patch  |     Focuses:  multisite

Comment (by strangerstudios):

 Okay. Attached a new diff. Changes:

 I left the `update_posts_count()` function in `ms-functions.php` alone,
 except to change the wording of the comment. It is slightly different from
 the first patch but I think reflects what this latest patch does.

 I added two new functions to `ms-blogs.php` mimicking the
 `_update_blog_date_on_post_publish()` and
 `_update_blog_date_on_post_delete()` functions. I wouldn't want to add new
 functions here if we didn't have to, but we need to do something like this
 so we can check if the status is really changing. Added these two
 functions also has the advantages of having clearer code and preserving
 the update_posts_count() function to simply update the count with no
 checks if people are using the function that way.

 1. `_update_posts_count_on_delete($post_id)` now fires on `post_delete`.
 If the post being deleted is not in "publish" status, we don't update the
 count since deleting a draft/etc wouldn't affect the count.

 2. `_update_posts_count_on_transition_post_status($new_status,
 $old_status)` now fires on `transition_post_status`. If the post statuses
 are the same or neither of them is "publish", we don't update the count
 since this change shouldn't affect the count.

 I tested on my multisite dev and it successfully updated the count when
 posts were created, deleted, updated, etc, and didn't update the count in
 the new cases where we don't. This will avoid potentially slow queries on
 sites with lots of published posts.

 If adding so much code for this feels icky, I'd suggest another patch that
 calls `update_posts_count()` on `post_delete` and `save_post` (might as
 well use this since we wouldn't be checking the statuses anyway) with an
 update to the comment RE when `update_posts_count()` is called.

Ticket URL: <https://core.trac.wordpress.org/ticket/27952#comment:7>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list