Opened 7 weeks ago
Last modified 6 weeks ago
#65359 new enhancement
Plugins list: add a native "Filter by author" control instead of per-author status tabs
| Reported by: | lopo | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | Awaiting Review |
| Component: | Plugins | Version: | 7.0 |
| Severity: | normal | Keywords: | has-patch has-unit-tests |
| Cc: | Focuses: |
Description
Since #60495 / [61695] (WP 7.0), plugins can add custom views to the Plugins screen filter bar via plugins_list (#57278) plus the new plugins_list_status_text. Using this to group plugins on a per-author basis can be useful, but as raised in #60495 comment:40, that pattern has two problems:
- It doesn't scale. Each adopting vendor adds a top-level link to the single-line
subsubsubbar, crowding out the functional status views on sites with plugins from many authors. - It conflates two axes — a plugin's *status* (active, needs update…) versus its *source* (who made it).
Proposal: leave the #60495 hooks as-is and add a dedicated control for the *author* axis — a single native "Filter by author" <select> plus a Filter button in the tablenav, backed by a new plugin_author query variable and populated from installed plugins' Author headers. One control regardless of author count, for every plugin, with no plugin-side code. It is shown only when ≥2 distinct authors are installed.
It works without JavaScript (plain GET), is CSP-safe, and is fully accessible — a native labelled <select> with an explicit Filter button, so nothing navigates on change. The grouping is filterable via plugins_list_authors and plugins_list_plugin_author (e.g. to merge author-name header variants under one entry). get_views() and the #60495 hooks are untouched: this is purely additive and reverts nothing from 7.0. It does not *forbid* a plugin from still injecting a status tab — it gives author filtering a clutter-free home and removes the incentive.
A patch against WP_Plugins_List_Table and wp-admin/plugins.php, with unit tests, is attached.
These two filters let plugins refine the grouping, which is otherwise coarse since it is derived straight from the Author header:
<?php // Merge author-name variants by returning the same key for several plugins. apply_filters( 'plugins_list_plugin_author', string $author_key, string $plugin_file, array $plugin_data ): string // Relabel / reorder / hide / merge dropdown entries: [ key => [ 'label', 'count' ] ]. apply_filters( 'plugins_list_authors', array $plugin_authors, array $all_plugins ): array
Props to webdados.
Attachments (2)
Change History (8)
This ticket was mentioned in PR #11989 on WordPress/wordpress-develop by @lopo.
7 weeks ago
#1
#2
@
7 weeks ago
I second this 💪
But I disagree on this: "It does not *forbid* a plugin from still injecting a status tab"
@webdados commented on PR #11989:
7 weeks ago
#3
I second adding this.
#4
@
7 weeks ago
@webdados what I mean is that the PR per se cannot enforce anything about that other filter, only proposing another more sustainable solution.
If the other filter has to be restricted to certain uses, that should be addressed in documentation, for example.
#6
@
6 weeks ago
- Keywords needs-testing removed
Test Report
Environment:
WordPress Playground
Patch applied successfully
Results:
Confirmed that a new "Filter by author" dropdown appears in the Plugins screen when two or more distinct plugin authors are installed.
The dropdown is populated using plugin Author headers.
Selecting an author and clicking the Filter button correctly filters the plugin list to only show plugins from the selected author.
The filter works through standard GET requests and functions correctly without JavaScript.
Existing status views (Active, Inactive, Update Available, etc.) remain unchanged and continue to work as expected.
Verified that the author filter helps reduce clutter in the status filter bar compared to adding separate author-specific views.
No regressions observed during testing.
Patch tested successfully and behaves as described in the ticket.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)
Adds a native "Filter by author" control to the Plugins screen: a single
<select>plus a Filter button in the table navigation, backed by a newplugin_authorquery variable and populated from installed plugins'Authorheaders.Trac ticket: https://core.trac.wordpress.org/ticket/65359
## Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code (Anthropic)
Model(s): Claude Opus 4.7
Used for: The implementation, unit tests, and CSS were drafted by the AI across several iterations under my direction — I chose the approach (a native
<select>+ GET form for full accessibility and no-JS / CSP safety), reviewed and edited the output, and ran the test suite. I take responsibility for the contribution.