Post List Tables Row Headers Changed

🔗 **Source:** [Post List Tables Row Headers Changed](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/)
> [!note]+ Document Notes
> tags: [wordpress-accessibility, wordpress-7-1, list-tables, screen-readers, plugin-compatibility]
> author: Joe Dolson
> source: Make WordPress Core
> reference: https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/
> date created: 2026-08-04
>
> > [!info] Generated analysis — not the author's words. Sections below are machine-written
> > from the captured source. Only text inside `> [!quote]` blocks is verbatim from the author.
> > Do not quote or attribute any other line to the named author.
>
> # 🏷️ Title: Post list tables row headers changed
>
<!-- deep-read:sections start -->
## 🧭 Table of Contents
- [🔗 References](#-references)
- [📝 Summary](#-summary)
- [📖 Main Content](#-main-content)
- [🗒️ Notes](#️-notes)
- [📚 References](#-references-1)
- [🗣️ Paraphrase](#️-paraphrase)
- [📰 Newsletter](#-newsletter)
- [✅ Action Items](#-action-items)
- [🧪 Hypotheses](#-hypotheses)
- [📊 Methodology](#-methodology)
- [❓ Questions](#-questions)
- [🔮 Future Research](#-future-research)
- [💡 Implications](#-implications)
- [🧠 Learning Styles Assessment](#-learning-styles-assessment)
- [📊 Accessibility Assessment](#-accessibility-assessment)
- [🌍 DEIB Assessment](#-deib-assessment)
- [✅ Logical Validity](#-logical-validity)
- [🛡️ DARVO Analysis](#-darvo-analysis)
- [🎯 Conclusion](#-conclusion)
- [🔄 Refactor Appendix](#-refactor-appendix--post-list-tables-row-headers-changed)
### 🔗 References
- [WordPress Core ticket #32892](https://core.trac.wordpress.org/ticket/32892)
- [WordPress 7.1 developer note](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/)
- [Reviewer profile: wildworks](https://profiles.wordpress.org/wildworks/)
## 📝 Summary
- WordPress 7.1 moves the post list table’s primary row header from the checkbox column to the post-title column.
- The change gives screen readers a stable row name based on the post title instead of a checkbox that can disappear when editing isn’t allowed.
- Plugin and theme developers may need to update CSS and JavaScript selectors that assume the checkbox sits in a `th` or the title and row actions sit in a `td`.
- Responsive collapsed cells now use flex layout, creating another visual regression surface for extensions.
- For backward compatibility, extenders should account for both old and new `td`/`th` structures when supporting WordPress versions before 7.1.
- Bottom line: this semantic markup correction has a direct accessibility benefit and a concrete compatibility audit for custom admin-table code.
## 📖 Main Content
The old post-list markup treated the selection checkbox cell as the row header. That could cause assistive technology to identify a row by its selection control rather than its post title, and the checkbox could be absent for posts the current user couldn’t edit.
WordPress 7.1 places `scope="row"` on the title cell and gives that `th` an `aria-label` containing the post title. The checkbox cell becomes a `td`. This aligns the row header with the row’s primary identity.
The semantic change affects implementation assumptions. Selectors such as `th.check-column` no longer match the checkbox cell in 7.1. Selectors that assume `.row-title`, `.post-state`, or `.row-actions` live inside a `td` may also fail. Supporting both element types is the author’s compatibility recommendation for extensions that still support older WordPress versions.
The responsive list-table CSS also changes collapsed cells to flex layout. Extension testing should cover desktop and narrow viewports, not just DOM selector matching.
## 🗒️ Notes
- Scope: post list tables in the WordPress admin.
- Core ticket: #32892.
- Old structure: checkbox column was `th[scope="row"]`; title column was `td`.
- New structure: checkbox column is `td`; title column is `th[scope="row"]` with an accessible name based on the post title.
- Primary benefit: screen-reader users hear a meaningful row identifier consistently.
- Compatibility risk 1: CSS or event delegation bound to `th.check-column` or `th input[type="checkbox"]`.
- Compatibility risk 2: title and row-action selectors constrained to `td`.
- Compatibility risk 3: extension CSS that conflicts with flex layout in collapsed responsive rows.
- Suggested migration: use class-based selectors where possible and include both `td` and `th` variants while supporting pre-7.1 releases.
- Verification should include editable and non-editable posts, keyboard use, screen-reader row navigation, bulk selection, row actions, and narrow viewports.
- The post reports a review by wildworks but doesn’t publish a compatibility survey or screen-reader test matrix.
## 📚 References
- [Post list tables row headers changed](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/) — primary developer note.
- [Core Trac #32892](https://core.trac.wordpress.org/ticket/32892) — implementation history and discussion.
- [WordPress accessibility coding standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/accessibility-coding-standards/) — related guidance.
- [WCAG 2.2: Info and Relationships](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) — related semantic criterion.
## 🗣️ Paraphrase
1. Core moved the row-header role from the selection-control cell to the post-title cell.
2. Screen readers can now identify a row using the post’s name even when the edit checkbox isn’t rendered.
3. Extensions may break if their styles or event handlers expect the checkbox cell to be a `th`.
4. Extensions may also break if they require titles and row actions to be descendants of a `td`.
5. Responsive collapsed cells use flex layout after the change.
6. Developers should audit selectors for the old checkbox-cell element.
7. Developers should audit selectors for the old title-cell element.
8. Supporting both element types preserves compatibility across the 7.1 boundary.
9. The before-and-after examples make the semantic DOM change explicit.
## 📰 Newsletter
WordPress 7.1 gives post-list rows a better name. Core moved `scope="row"` from the checkbox cell to the title cell, so screen readers identify “Hello world!” instead of a selection control that might not exist. The tradeoff is a selector audit: plugins and themes that target `th.check-column`, require row actions inside a `td`, or style collapsed cells should test the new markup and responsive flex layout. See the [developer note](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/) and [ticket #32892](https://core.trac.wordpress.org/ticket/32892).
## ✅ Action Items
#### DevRel
- Publish a migration example showing resilient selectors and a before/after DOM test.
#### OSPO
- Add the change to downstream compatibility communications for maintained WordPress extensions.
#### Community
- Invite plugin and theme maintainers with custom admin list tables to test WordPress 7.1.
#### WordPress
##### Core
- Confirm ticket #32892 coverage for post types, permissions, and row-action variants.
##### Core Performance
- Not applicable to this source; it reports no performance claim.
##### Core AI
- Not applicable to this source; it describes static admin markup.
##### Core Program Team
- Track the dev note and compatibility testing in the 7.1 release plan.
##### Mobile
- Not applicable to this source; mobile apps don’t use this wp-admin table markup.
##### Playground
- Provide a reproducible 7.0-versus-7.1 selector test setup.
##### Community
- Surface the change in contributor and developer office hours.
##### Training
- Update list-table accessibility examples after 7.1 ships.
##### Marketing
- Not applicable to this source; no campaign work is required.
##### Support
- Prepare troubleshooting guidance for broken admin-row styling or actions.
##### Design
- Review responsive collapsed-row behavior after the flex-layout change.
##### Documentation
- Update extension guidance that assumes the primary column is a `td`.
##### Photos
- Not applicable to this source; it doesn’t affect Photos directly.
##### TV
- Caption any testing demo and include DOM examples in its description.
##### Polyglots
- Not applicable to this source; the change adds no translatable string.
##### Accessibility
- Test row navigation and accessible names with multiple screen readers and permission states.
##### Meta
- Audit WordPress.org custom admin tables only where they reuse affected core markup.
##### CLI
- Not applicable to this source; WP-CLI doesn’t render the affected browser table.
##### Hosting
- Include extension compatibility checks in 7.1 staging guidance.
##### Tide
- Consider a targeted brittle-selector check only if false-positive rates are acceptable.
##### Openverse
- Not applicable to this source; no Openverse UI is described.
##### Themes
- Audit admin-facing code for element-qualified title and row-action selectors.
##### Plugins
- Search for `th.check-column`, `th input[type="checkbox"]`, and title or row-action selectors constrained to `td`.
#### The WPOCC
- The WP Open Community Collective can fund a cross-extension compatibility test effort or contributor documentation sprint.
#### FAIR
- Encourage portable, class-based integration contracts and publish regression fixtures that don’t depend on private infrastructure.
## 🧪 Hypotheses
- Extensions using `th.check-column` lose checkbox-specific styling or event handling on WordPress 7.1.
- Extensions using `td .row-actions` fail to style or bind row actions after the title cell becomes a `th`.
- Screen-reader row announcements become more consistent for posts the user cannot edit.
- Dual `td`/`th` selectors preserve behavior across WordPress 7.0 and 7.1.
- Custom responsive CSS produces more conflicts after collapsed cells switch to flex.
### 📊 Methodology
- Build matched WordPress 7.0 and 7.1 environments with the same posts, roles, plugins, and theme.
- Inventory extension CSS and JavaScript for affected selectors.
- Test checkboxes, row actions, delegated handlers, desktop and narrow viewports.
- Record screen-reader output for editable and non-editable rows with VoiceOver, NVDA, and JAWS.
- Compare failures by selector family and permission state.
### ❓ Questions
- Does the semantic pattern apply consistently across every post type and status?
- Which popular extensions qualify selectors by `td` or `th`?
- How do major screen readers announce the new `aria-label`?
- Does flex layout change ordering, truncation, or focus visibility in collapsed rows?
- Should Core document a selector contract for list-table extension points?
### 🔮 Future Research
- Measure selector breakage across a representative plugin corpus.
- Publish a screen-reader announcement matrix across roles and browsers.
- Compare class-only and element-qualified selectors for longevity.
- Explore automated compatibility warnings for brittle selectors.
- Review other list tables for row headers that don’t name the primary object.
### 💡 Implications
- Practice: extension authors should avoid unnecessary element qualification.
- Policy: release notes should flag semantic DOM changes that create compatibility work.
- Security: handler failures could disable expected controls, though the source reports no vulnerability.
- Education: guidance should pair semantic HTML reasoning with migration examples.
- Funding: compatibility sweeps and assistive-technology testing suit sponsored contribution.
### 🧠 Learning Styles Assessment
- Reading level estimate: Flesch-Kincaid Grade 10–12, estimated from technical vocabulary and sentence length rather than a computed source-text score.
#### 👀 Visual learners
- Present: before-and-after markup. Improve: add annotated DOM diagrams and viewport screenshots.
#### 🔊 Aural learners
- Present: not applicable; there’s no audio. Improve: add a narrated screen-reader comparison.
#### 🗣️ Verbal learners
- Present: concise explanations. Improve: define row header and element-qualified selector.
#### 🧩 Kinesthetic learners
- Present: selector examples. Improve: add a minimal plugin and regression checklist.
#### 🧠 Logical learners
- Present: clear old/new cause and effect. Improve: add a version-support decision table.
#### 🧑🤝🧑 Social learners
- Present: reviewer credit and ticket links. Improve: add contributor testing prompts.
#### 🧘♀️ Solitary learners
- Present: self-directed guidance. Improve: add a self-check with expected results.
#### 🌿 Naturalistic learners
- Present: not applicable; there’s no environmental analogy. Improve: note ecosystem maintenance without replacing technical detail.
### 📊 Accessibility Assessment
#### Screen reader semantics
- Present: directly improved row naming. Improve: publish AT results. Maps chiefly to WCAG 2.2 SC 1.3.1.
#### Keyboard navigation
- Present: controls remain. Improve: document focus-order regressions. Relevant to SC 2.1.1 and 2.4.3.
#### Contrast and readability
- Present: not assessed. Improve: verify focus contrast under SC 1.4.3 and 1.4.11.
#### Text resizing and reflow
- Present: responsive cells are mentioned. Improve: test 200% and 400% zoom under SC 1.4.4 and 1.4.10.
#### Media and captions
- Present: not applicable; no time-based media. Improve: caption future demos under SC 1.2.x.
#### Forms and interactions
- Present: checkbox and row-action structure. Improve: test names and status feedback under SC 2.5.8, 3.3.2, and 4.1.2.
#### Standards reference
- The post doesn’t cite WCAG. The row-header relationship maps most clearly to SC 1.3.1.
### 🌍 DEIB Assessment
#### Cultural breadth
- Present: language-neutral concept. Improve: include multilingual and RTL admin testing.
#### Inclusive language
- Present: neutral wording. Improve: define specialist terms for contributors outside Core.
#### Neurodiversity support
- Present: short sections and code comparisons. Improve: add a predictable checklist.
#### Representation
- Present: author and reviewer are identifiable. Improve: report testing across disabilities and contexts.
#### Psychological safety
- Present: risk is described without blame. Improve: give maintainers a support route.
### ✅ Logical Validity
#### Strong reasoning
- Moving the row header to the title causally gives assistive technology a stable object name.
- The before-and-after markup supports the selector-impact claims.
- The dual-selector recommendation follows from supporting releases on both sides of 7.1.
#### Fallacies
- Not applicable; the post makes bounded technical claims. “Significantly” would be stronger with test evidence, but it isn’t a named fallacy.
#### Tone of voice
- Concise, procedural, and cautionary.
### 🛡️ DARVO Analysis
- Deny: not applicable; the source doesn’t deny harm or responsibility.
- Attack: not applicable; it doesn’t attack a reporter or maintainer.
- Reverse victim/offender: not applicable; it doesn’t reverse roles.
- Emotional cues: neutral technical wording.
## 🎯 Conclusion
WordPress 7.1 makes the post-title cell the row header, improving screen-reader identification. Maintainers should audit element-qualified selectors and responsive CSS, then test both old and new markup. The best follow-up is an executable matrix covering selectors, permissions, viewports, and assistive technologies.
## 🔄 Refactor Appendix — Post list tables row headers changed
### 📚 Literature Atoms (H3)
### [H1] Row headers should name the listed object
> [!quote] ID:rw_pending_h1
> The `th` is in the second column, with an `aria-label` containing the post title.
**Context & use**:
- Following the post-change markup.
- The row header now carries the post’s identity rather than a selection control.
**Tags**: #xref #articleseed
**Highlight**: [view source](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/)
<!-- atomicity: 1 idea ✓ -->
### [H2] Dual selectors bridge the 7.1 markup change
> [!quote] ID:rw_pending_h2
> Retaining both `td` and `th` selectors will support retaining compatibility with versions of WordPress prior to 7.1.
**Context & use**:
- In “What you may need to change.”
- This is the source’s direct backward-compatibility recommendation.
**Tags**: #xref
**Highlight**: [view source](https://make.wordpress.org/core/2026/08/03/post-list-tables-row-headers-changed/)
<!-- atomicity: 1 idea ✓ -->
### 🧠 Permanent Candidates (H4)
#### [P1] Semantic identities outlast structural selectors
**Claim**: Extension code stays more compatible when selectors follow stable semantic classes instead of incidental cell elements.
**Evidence pointer**: [[#H1]]
**Scope & conditions**: Applies when classes form the supported integration surface; breaks when an extension truly needs element-specific semantics.
**Links**:
- [[Accessible data tables]] — because extends
- [[WordPress extension compatibility]] — because applies-in
- [[DOM regression testing]] — because evidence-for
<!-- atomicity: 1 idea ✓ -->
### ✏️ Fleeting Queue
- [F1] Inventory extensions using affected selectors — ticket #32892 #xref
- [F2] Capture screen-reader announcements across permissions — row-header change #articleseed
### → Things 3 (max 2 actions)
- [ ] Test one plugin against WordPress 7.0 and 7.1 post-list markup — compatibility check #things
- [ ] Record VoiceOver announcements for editable and non-editable posts — accessibility evidence #things
<!-- deep-read:sections end -->
📄 **Full text:** [[Full Document Contents/Articles/Post List Tables Row Headers Changed.md|Post List Tables Row Headers Changed by Joe Dolson]]
## Highlights
- This change significantly improves accessibility for post list tables by ensuring that the naming used for screen readers to identify the current row refers consistently to the name of the relevant post, rather than referring to a selection checkbox that may not be present if the post is not currently available for editing. ([View Highlight](https://read.readwise.io/read/01kz6grxwchtncncmb3vr28g4e))
- Note: The semantic row header now names the post consistently, even when edit permissions remove the checkbox.
- Tags: atom/literature/h1, wordpress-accessibility, screen-readers
- Retaining both `td` and `th` selectors will support retaining compatibility with versions of WordPress prior to 7.1. ([View Highlight](https://read.readwise.io/read/01kz6grwmf8rmbcf43kgee9tva))
- Note: Extensions supporting older WordPress releases should allow both old and new table-cell elements.
- Tags: list-tables, plugin-compatibility, atom/literature/h2