[wp-trac] [WordPress Trac] #65102: WP_MS_Users_List_Table::display_rows() should emit id="user-{ID}" on <tr> to match WP_Users_List_Table

WordPress Trac noreply at wordpress.org
Mon Apr 20 05:59:21 UTC 2026


#65102: WP_MS_Users_List_Table::display_rows() should emit id="user-{ID}" on <tr>
to match WP_Users_List_Table
--------------------------+----------------------------------------
 Reporter:  dd32          |       Owner:  (none)
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  Users         |     Version:
 Severity:  normal        |  Resolution:
 Keywords:  has-patch     |     Focuses:  administration, multisite
--------------------------+----------------------------------------
Description changed by sabernhardt:

Old description:

> `WP_Users_List_Table::single_row()` (used on per-site wp-admin/users.php)
> renders each user row with:
>
>   <tr id="user-123">...</tr>
>
> …but its network counterpart `WP_MS_Users_List_Table::display_rows()`
> (used on wp-admin/network/users.php) renders:
>
>   <tr class="...">...</tr>
>
> No id, no per-user anchor.
>
> This makes it impossible to target a specific user row by ID on the
> network screen using stylesheets, JavaScript, or assistive-tech anchors,
> even though the per-site table supports it. Plugins that decorate /
> restyle specific user rows have to fall back to scraping the bulk-action
> checkbox (#blog_{ID}) and walking .closest('tr') — a brittle workaround.
>
> Expected: `<tr>` on the network Users list carries `id="user-{ID}"` like
> the per-site list.
>
> Actual: No row id at all.

New description:

 `WP_Users_List_Table::single_row()` (used on per-site `wp-
 admin/users.php`) renders each user row with:
 {{{
   <tr id="user-123">...</tr>
 }}}
 …but its network counterpart `WP_MS_Users_List_Table::display_rows()`
 (used on `wp-admin/network/users.php`) renders:
 {{{
   <tr class="...">...</tr>
 }}}
 No id, no per-user anchor.

 This makes it impossible to target a specific user row by ID on the
 network screen using stylesheets, JavaScript, or assistive-tech anchors,
 even though the per-site table supports it. Plugins that decorate /
 restyle specific user rows have to fall back to scraping the bulk-action
 checkbox (`#blog_{ID}`) and walking `.closest('tr')` — a brittle
 workaround.

 Expected: `<tr>` on the network Users list carries `id="user-{ID}"` like
 the per-site list.

 Actual: No row id at all.

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/65102#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list