Opened 7 years ago
Last modified 3 weeks 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: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Awaiting Review |
| Component: | Administration | Version: | |
| Severity: | normal | Keywords: | has-screenshots has-patch has-unit-tests |
| Cc: | Focuses: | administration |
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 (2)
Change History (5)
#2
@
10 months ago
- Component Posts, Post Types → Administration
@pbiron this feels like excesively specific for just one use case (Mine), wouldn't be better to add a setter method or a getter method with a single hook for user_posts_count?
4 years have passed, so I assume that you were able to sort this in another way.
This ticket was mentioned in PR #12315 on WordPress/wordpress-develop by @arkaprabhachowdhury.
3 weeks ago
#3
- Keywords has-unit-tests added
Adds a user_posts_count filter to WP_Posts_List_Table so plugins can align the Mine view count with filtered list-table queries. The filter receives the post type and current user ID for context.
Includes regression coverage for the filter arguments and rendered Mine count.
## Use of AI Tools
AI assistance: Yes
Tool(s): OpenAI Codex
Model(s): GPT-5
Used for: Ticket and code analysis, implementation, and test drafting. The resulting changes were reviewed and validated with PHPCBF, PHPCS, and focused PHPUnit tests.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
47640.diff adds 2 new filters:
for filtering the number of posts authored by the current user.
For the use case described above, they could be used as follows:
where the presence of post meta with key
my_meta_keytells me which posts to count (i.e., posts without it are the ones that are "hidden" from the list table).