Make WordPress Core

Opened 5 months ago

Last modified 4 months 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:

  1. It doesn't scale. Each adopting vendor adds a top-level link to the single-line subsubsub bar, crowding out the functional status views on sites with plugins from many authors.
  2. 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)

One authors.png​ (75.6 KB ) - added by sanayasir 4 months ago.
All Authors.png​ (113.9 KB ) - added by sanayasir 4 months ago.

Download all attachments as: .zip

Change History (8)

This ticket was mentioned in ​PR #11989 on ​WordPress/wordpress-develop by ​@lopo.


5 months ago
#1

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 new plugin_author query variable and populated from installed plugins' Author headers.

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.

#2 @webdados
5 months ago

I second this 💪

But I disagree on this: "It does not *forbid* a plugin from still injecting a status tab"

Last edited 5 months ago by webdados (previous) (diff)

​@webdados commented on ​PR #11989:


5 months ago
#3

I second adding this.

#4 @lopo
5 months 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.

Last edited 5 months ago by lopo (previous) (diff)

#5 @webdados
5 months ago

@lopo Gotcha! You're right.

#6 @sanayasir
4 months 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.

Note: See TracTickets for help on using tickets.