[wp-trac] [WordPress Trac] #16603: Add hooks to wp_count_posts()

WordPress Trac wp-trac at lists.automattic.com
Sun Feb 20 19:25:18 UTC 2011

#16603: Add hooks to wp_count_posts()
 Reporter:  mikeschinkel  |      Owner:
     Type:  enhancement   |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Query         |    Version:
 Severity:  normal        |   Keywords:  has-patch dev-feedback

 The use-case where this is needed is when the sites is using roles &
 capabilities to limit access to viewing posts to only those who have the
 proper capabilities to see them.

 For example, assume we have a system with a ''"Manager"'' role and a
 taxonomy called ''"Post Visibility"'' where terms are ''"Visible to All"''
 and  ''"Visible to Managers Only."''  We add a `'see_managers_posts'`
 capability to ''"Manager."'' We then filter outs posts with the'' "Visible
 to Managers Only"'' term using the `'posts_where'` and `'posts_join'`
 hooks when viewed by users whose role does not have the
 `'see_managers_posts'` capability.

 With that configuration now assume for example we have 10 posts with 3 of
 them ''"Visible to Managers Only."'' The post list in `/wp-admin/edit.php`
 will use `wp_count_posts()` to show that we have 10 posts when we can only
 see 7 of them. Currently to fix it so the post counts display `7` for non-
 managers we have to hook the `'query'` hook, which is a hook of last

 So, the attached patch adds two hooks to  `wp_count_posts()`:

  - `'wp_count_posts_sql'` - To allow modifications of the SQL used to
 count posts, and
  - `'wp_count_posts'` - To allow modifications of the array returned by
 the function.

 I decided to add two (2) hooks because not having the former would mean
 we'd need to make two SQL queries if we need to modify the counts, and not
 having the latter would mean that we'd have the complexity of modifying
 SQL in use-cases where the a SQL query modification is not what is needed
 to to determine the proper counts.

Ticket URL: <http://core.trac.wordpress.org/ticket/16603>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software

More information about the wp-trac mailing list