WordPress.org

Make WordPress Core

Opened 3 months ago

#47640 new defect (bug)

WP_Posts_List_Table::get_views() doesn't allow the "Mine" counts to be filtered

Reported by: pbiron Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: Posts, Post Types Keywords: has-screenshots
Focuses: administration Cc:
PR Number:

Description

WP_Posts_List_Table::get_views() calls wp_count_posts() to get the counts for the various post statuses.

It then computes the count for posts owned by the current user for use in the "Mine" view. That computation uses $this->user_posts_count which is computed in WP_Posts_List_Table::__construct() with custom SQL.

The problem is that if you hook into the wp_count_posts filter and alter the counts for each post status you can end up with a situation where the "Mine" count is very different than the sum of the post status counts.

For example, I've got a CPT where some (but not all) of the posts of that type are just "placeholders" for posts of another CPT. I hide those "placeholder" posts from the list table by hooking into request and altering the request that the list table uses. I then hook into wp_count_posts to adjust the counts by post status accordingly (e.g., don't count the "hidden" posts). This results in a situation that could be very confusing for users (see screenshot).

Thus, I suggest that a filter be added to filter the value of $this->user_posts_count.

Attachments (1)

view-counts.png (3.9 KB) - added by pbiron 3 months ago.

Download all attachments as: .zip

Change History (1)

@pbiron
3 months ago

Note: See TracTickets for help on using tickets.