Home · Journal · WordPress
WordPress13 min read11/08/2026

WordPress 7.1 admin tables: what actually breaks

We installed the release candidate with twelve of the most popular plugins and compared the HTML of seven admin screens, before and after. Three plugins reference the cells that move. One of them stops working. Here is which, and how to check your own site.

Black and white desk setup: an open laptop showing a website under construction, behind it a vertical monitor filled with PHP code including a theme options line and a body class function, and two case fans of a desktop computer on the right
The code that decides whether your admin breaks is not WordPress code. It is the line somebody wrote years ago to line up a checkbox.
In brief

What we did. WordPress 7.1 ships on 19 August 2026 and moves the row header in admin list tables from the checkbox cell to the title cell. We ran the release candidate against WordPress 7.0.3 on the same installation, with twelve popular plugins active, and diffed the HTML of seven admin screens.

What we found. Every one of the seven screens changed, not only the post lists. Of the 195 stylesheets and scripts the posts screen loads, three name the cells that move. Only one of the three actually breaks: Admin Columns loses its row selection. No column disappeared, and the public site is untouched.

Why it is worth half an hour. Because the update lands on many installs automatically, because it is a Wednesday in the middle of August, and because the check that tells you whether you are one of the few takes ten minutes with two grep commands.

  • The exact markup, before and after, from a real install.
  • The one selector that goes from four matches to zero.
  • Why two of the three plugins our search flagged are false alarms.
  • The two lines to search for in your own theme and plugins.

What we found, in one table

The short version, before the reasoning.

Same installation, WordPress 7.0.3 and 7.1-RC2, 11 August 2026
QuestionAnswer
Does the public site change?No. Not one page, not one byte of front-end markup
Do any admin columns disappear?No. All fourteen columns on the posts screen survived
How many admin screens changed?Seven out of seven we checked
How many of twelve plugins reference the moved cells?Three
How many actually break?One: Admin Columns, row selection
How many declare they have tested 7.1?One: Wordfence

If you run stock plugins and nobody has written custom CSS or JavaScript for your admin, that table is the whole article. The rest is for the people who need to prove it, or who have custom code and need to find it.

What changed in the markup

Here is the definition, in one sentence you can forward to whoever maintains your site.

In WordPress 7.1 the checkbox cell in every admin list row stops being the row header and becomes a plain cell, while the title cell becomes the row header and carries the item's name as a label for screen readers.

This is what WordPress 7.0.3 produces for the first row of the posts list:

<th scope="row" class="check-column"> … checkbox
<td class="title column-title has-row-actions column-primary page-title"> … title

And this is the same installation, minutes later, on 7.1-RC2:

<td class="check-column"> … checkbox
<th scope="row" class="title column-title has-row-actions column-primary page-title"
    aria-label="Articolo di prova 3"> … title

The classes are identical. What changes is the tag carrying them, plus the new label. That is the entire breaking change.

The reason is good, and it is worth stating plainly: until now a screen reader announced each row as "checkbox". From 19 August it announces the post title. The developer note published on 3 August puts it like this:

"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."

If you go and check the reference, you will find the old form

The reference page for single_row_columns() still shows <th scope="row" class="check-column">, because it documents the stable release. The code quoted above comes from the 7.1-RC2 files on a running install, not from the docs. That gap is exactly why we ran the test instead of trusting the note.

The one plugin that breaks: Admin Columns

In assets/js/table.js, Admin Columns collects the checked rows with this selector, verbatim:

querySelectorAll("tbody th.check-column input[type=checkbox]:checked")

On WordPress 7.0.3 that selector matches four checkboxes in our test list. On 7.1-RC2 it matches zero. That is not a prediction; it is a count run against the two saved pages, the same screen before and after the upgrade.

The function feeds three others directly above it in the same file: how many rows are selected, which cells belong to the selected rows, and whether everything is selected. With zero where four used to be, the selection layer still draws but has nothing to work on.

The current public version is 7.0.19, released on 29 May 2026 — two months before this change was announced. Elsewhere in the same file the plugin uses .check-column input[type=checkbox] without naming the tag, which survives the change untouched. The breakage is one selector, not a plugin-wide problem, and it is the kind of thing that gets fixed in a point release.

The two false alarms, and why they matter

The posts screen with our twelve plugins active loads 195 stylesheets and scripts. We downloaded every one of them and searched for the names of the two cells. Three plugins came back. Two of them are noise, and the reason each one is noise is the useful part.

All in One SEO has six rules written on th.check-column across two stylesheets that the posts screen genuinely loads. Every one of them is prefixed with .aioseo-wp-table, which scopes them to the tables the plugin draws on its own screens. The WordPress posts list never sees them.

Yoast SEO ships a closest("th") in edit-page.js, which to an automated search looks exactly like the problem. Read in full, it walks up from a help icon in the table header — the row of column names at the top, which stays th in 7.1. Yoast is not affected.

The rule this leaves you with

Searching for the cell name in your codebase gives you suspects, not culprits. Out of three plugins the search flagged, one breaks, one changes some padding on its own screens, and one has nothing to do with it. Anyone who hands you a grep output and calls it an audit has done the first half of the job.

Seven screens, not just posts

Here is where the test found something the announcement does not say.

The developer note is titled Post list tables row headers changed, and the coverage that followed repeated the same scope: post, page and custom post type lists. We checked seven different admin screens. All seven changed.

Rows with a swapped cell, same site before and after the upgrade
Admin screenRowsWordPress 7.0.3WordPress 7.1-RC2
Posts4header on the checkboxheader on the title
Pages7header on the checkboxheader on the title
Media, list view2header on the checkboxheader on the title
Comments1header on the checkboxheader on the title
Plugins14header on the checkboxheader on the plugin name
Users1header on the checkboxheader on the name
Categories1header on the checkboxheader on the name

The reason is in the core source, and it makes the result predictable in hindsight. The change does not live in the class that draws the posts list. It lives in WP_List_Table, the base class every admin list table inherits from. This is the line, in wp-admin/includes/class-wp-list-table.php:

if ( 'cb' === $column_name ) {
    echo '<td class="check-column">';
    echo $this->column_cb( $item );
    echo '</td>';
}

If you have a custom plugin with its own admin list — and extending that class is the documented way to build one — you inherit the change without having touched anything. That is the part worth passing on to whoever wrote it for you.

How we tested it

Nothing here is hard to reproduce, which is the point.

Test parameters, for anyone who wants to repeat it
ParameterValue
Starting versionWordPress 7.0.3
Target versionWordPress 7.1-RC2
PHP8.3
DatabaseMariaDB 11
Plugins installed and active12, at their public version on 11 August
Admin screens compared7
ComparisonHTML of the same page, same logged-in user, before and after
Test date11 August 2026

One clean install in an isolated container, twelve plugins active at once, seven screens saved as HTML, core upgraded in place, the same seven screens saved again with the same session. Then a search across every asset the posts screen loads.

An open laptop on a light wooden desk next to a white coffee cup and a wooden pot of pink and white flowers, the screen showing the WordPress admin panel with its dark sidebar, the Appearance menu open and the themes screen displayed
This is the screen that changes. What your visitors see stays exactly as it was, before and after the update.

Who is actually at risk

How much this concerns you, based on what is on your site
Your situationRiskWhat to do
Only plugins from the official directory, no custom codeLowUpdate, then open the posts list once
Plugins that add columns to the listsMediumTest on a copy before the 19th
Reordering or bulk-edit pluginsMediumTest multiple selection on the copy
Custom admin CSSHighSearch for th.check-column today
Custom JavaScript that reads the checkboxesHighSearch for th.check-column today
A bespoke plugin with its own admin listHighSend the line to whoever wrote it

Check your own site in ten minutes

Without a terminal. Open the posts list in the admin, right-click a checkbox and choose Inspect. If the highlighted element is a <th>, you are still on 7.0. Then look at your active plugins and ask which of them add columns, reorder rows, or do bulk editing on that screen. Those are your candidates, and they are the only ones worth putting on a test copy.

With a terminal, from the site root:

grep -rn "th\.check-column" wp-content/plugins wp-content/themes
grep -rn "td\.column-title\|td\.title\b" wp-content/plugins wp-content/themes

Every hit is a suspect. To tell whether it is a real problem, ask two questions. Is the file actually loaded on the list screens, or does it live on a settings page of its own? And is the rule prefixed by a class belonging to the plugin, the way All in One SEO scopes its own? A yes to the second question means you can move on.

The developer note also gives the fix, and it applies just as much to two lines of custom CSS in an admin theme:

"Retaining both td and th selectors will support retaining compatibility with versions of WordPress prior to 7.1."

In practice: do not swap th.check-column for td.check-column. Write both, separated by a comma. The rule then works on either version and you never have to come back to it.

What does not happen on 19 August

  • The public site does not change. No page, no form, no price, no load time. The change lives entirely inside /wp-admin/.
  • No column disappears. In our test all fourteen columns on the posts screen kept their place and their data, including the six Yoast adds.
  • This is not a security issue. It is a planned accessibility fix, announced sixteen days ahead. Security releases look different — the WooCommerce Social Login flaw from earlier this month is what one of those looks like.
  • Core's own quick edit keeps working. WordPress updated its own selectors together with the markup; list-tables.css in 7.1-RC2 declares both the old and the new form in the same rule.
  • Nothing changes for search. No indexed content is touched, so there is nothing to re-crawl and nothing to fix afterwards.

Who says they have tested it, eight days out

Every plugin in the official directory declares the WordPress version it has been tested up to. It does not declare compatibility; it declares that somebody looked. It is the only public signal you get, and reading it is free.

Active installs and declared tested-up-to version. Source: the WordPress.org plugin directory, read through its API on 11 August 2026
PluginActive installsTested up toLast updated
Yoast SEO10,000,000+7.0.34 August 2026
Contact Form 710,000,000+7.0.315 May 2026
Elementor10,000,000+7.0.36 August 2026
Classic Editor9,000,000+7.0.328 May 2026
WooCommerce7,000,000+7.0.310 August 2026
WPForms Lite5,000,000+7.0.316 July 2026
Wordfence Security5,000,000+7.110 August 2026
Rank Math SEO4,000,000+7.0.328 July 2026
All in One SEO3,000,000+7.0.33 August 2026
Yoast Duplicate Post3,000,000+7.0.322 June 2026
Post Types Order600,000+7.0.318 June 2026
Admin Columns100,000+7.0.329 May 2026
"Tested up to" is not "compatible with"

That field is a sentence written by the plugin author, not a certification issued by WordPress. A plugin declaring 7.0.3 is not automatically broken on 7.1, and one declaring 7.1 is not automatically fine. It tells you who has already looked, nothing more.

Added up, those twelve are over 66 million active installs — and WordPress.org rounds those figures down, so the real number is higher. Eight days before a release, eleven of twelve still saying 7.0.3 is ordinary: many authors update the line on release day or in the week after. It is not evidence that eleven plugins will break. It is a measure of how many houses have the lights on.

Bright desk with an iMac showing the words Work hard anywhere over a mountain photograph, in front of it an open laptop displaying an analytics panel with the figures 206,193, 3,820 and 227 above three charts, next to a white metal bottle and a small succulent
19 August 2026 is a Wednesday. Sites on automatic updates will find out on their own; a shop trading through August should pick the day.

Glossary, for the people who sign off the update

Five terms the rest of the page depends on
TermWhat it means
List tableThe admin screen that shows rows: posts, pages, products, plugins, users. WordPress calls them list tables.
Row headerThe cell that names the row, so a screen reader can say "you are on the row for this post". In code it is a <th scope="row">.
SelectorThe phrase CSS and JavaScript use to point at a cell. th.check-column means: the header cell with the checkbox class. Change the tag and the selector matches nothing.
Release candidateThe near-final build, published so people can test before release. 7.1-RC2 is what we tested against.
Tested up toThe WordPress version a plugin author says they have tried. A statement, not third-party testing.

Three levels: find yours

  • Stock plugins, no custom admin code. First level. Update whenever you like, open the posts list once afterwards, move on.
  • Plugins that add columns, reorder rows or do bulk edits. Second level. Test on a copy before the 19th, and if the author has not declared 7.1 yet, wait a week. Waiting costs you nothing.
  • A bespoke plugin, an admin theme, or CSS somebody wrote for you. Third level. Run the two searches today. If they return anything, the fix is a comma and two words, and whoever wrote it can apply it in half an hour.

If the test copy is the part you do not have — and for small sites that is the common case — that is the real problem, and it did not start with this update. Managed WordPress hosting with a staging environment exists precisely so that a Wednesday in August is not a decision. We set it up for the sites we look after, and it is not something you buy in a hurry: it is something you prepare once and then forget about.

Questions nobody has actually asked us

Nobody has written to us about WordPress 7.1 yet: the release candidate is a week old and the change is buried in a developer note. These are the questions we would ask reading the announcement cold, plus the ones that come up every time a major update approaches.

Will WordPress 7.1 break my plugins?

Almost certainly not. In our test with twelve of the most widely installed plugins, one selector in one plugin stopped matching: row selection in Admin Columns. Nothing else changed behaviour, no column disappeared, and the public site is untouched in every case.

Should I delay the update?

Delaying by a week or two on a site that takes orders is a defensible choice, as long as it is a choice and not an oversight. Delaying for months is not: later versions carry security fixes, and a site six months behind is a far more concrete problem than two swapped cells.

Does this affect WooCommerce product lists?

Yes, because the product list inherits from the same base class as every other admin list. WooCommerce was active throughout our test and showed no problems of its own; its columns stayed in place. If you sell online, the things to check are plugins that add columns or bulk actions to products.

I have a custom plugin with its own admin table. What do I tell the developer?

One line: in 7.1 the checkbox cell becomes a td and the primary column becomes a th, so search our code for th.check-column. The recommended fix from core is to keep both selectors, separated by a comma, so the code works on either version.

Why is WordPress making a change that can break things?

Because the old behaviour was wrong for anyone using a screen reader: each row was announced as "checkbox" rather than by the post title. It is an accessibility fix that has been requested for years, tracked as ticket 32892.

How do I know whether my theme has custom admin CSS?

Search the theme folder for th.check-column, and separately look for any file whose name suggests the admin — admin.css, admin.js, backend.css. Most themes have none of this. The ones that do are usually themes built for a specific company rather than bought from a marketplace.

Does this change anything for SEO or page speed?

Nothing at all. No public page is touched, so there is nothing to re-crawl and no effect on load times. If speed is what you are actually chasing, the answer is somewhere else entirely: why PageSpeed says 68 on mobile and 96 on desktop.

Is the accessibility improvement worth the disruption?

On the evidence of this test, the disruption is one selector in one plugin with 100,000 installs, against every screen reader user in the WordPress admin getting the post title instead of the word "checkbox". That trade looks reasonable, and it is the kind of change that is only ever painful once.

Can I see the change without installing the release candidate?

Not on your own site, no. The reference documentation still shows the 7.0 markup because it documents the stable release, which is exactly why we quoted the file from a running 7.1-RC2 install rather than the docs. If you want to see it yourself, a throwaway container takes about fifteen minutes.

What would you do if this were your client's site?

On the sites we look after we run the update on the staging copy on release day, open the posts list and the products list, try one bulk edit and one quick edit. If those pass, the live site is updated the next day. Fifteen minutes, and it is the same fifteen minutes for any version.

Last updated: 11 August 2026. WordPress 7.1 is scheduled for 19 August 2026 according to the official WordPress.org roadmap; release candidate 2 is the most recent build on the beta channel. The test described on this page was run on 11 August 2026 against WordPress 7.0.3 and 7.1-RC2, on PHP 8.3, with the twelve plugins listed in the table. We will repeat the same test on the final release on 19 August and update this page with the result, including the tested-up-to column, which changes for almost every plugin on release day.

What clients say

Trusted by the people who signed the checks.

5.0★★★★★21 reviews on Google
★★★★★
We have been collaborating for over 11 years on both presentation web sites and complex projects. We have always returned to the services offered by Cittago, thanks to the professionalism, courtesy and innovative solutions offered. Thanks for your partnership!
Aurelia Campean2 years ago
★★★★★
I am very satisfied with the collaboration with Cittago. Everything went in a professional manner, the deadlines were met, and the result was as expected. I highly recommend!
Cristea Christian4 days ago
★★★★★
5* for the quality of service, promptness and seriousness. Thank you, Paul!
Budurlean Crina5 days ago
★★★★★
We had the cabins and the view, but Cittago gave us the perfect digital “reception”. They created a premium, ultra-fast website for us that handles everything on its own: live calendar, automatic invoicing and card payments (only 1% commission instead of 15–20% on platforms). The best part? We edit it ourselves in a few minutes, without depending on anyone. And Paul is simply unreal for this world! The warmth, respect and attention to detail with which he explains absolutely everything make you understand the services offered perfectly. Not to be missed is the availability that Paul shows when you have a question. Honestly, I have rarely dealt with such a professional and dedicated company.
Viorica Pop5 days ago
★★★★★
Serious and fast team. They built our BarBox website from scratch, with a cinematic look that represents us perfectly, plus local SEO so people in Cluj can find us. Simple communication, zero hassle. 5 well-deserved stars.
tudor j6 days ago
★★★★★
I had the pleasure of working with Cittago for the creation of a website for a project that I develope together with some friends, and I couldn't be happier with the results. From start to finish, they demonstrated exceptional professionalism, creativity, and technical expertise. First and foremost, the communication throughout the project was outstanding. They took the time to listen to our ideas and goals, and they translated them into a visually stunning and highly functional website that perfectly represents our product. We were kept in the loop at every stage of development, and they was always quick to address any questions or concerns I had. What sets Cittago apart is their dedication to delivering results. They went above and beyond to ensure that our website met all our requirements and objectives. They even provided valuable suggestions and insights that improved the overall project. I wholeheartedly recommend Cittago to anyone looking for a digital agency that combines creativity, technical expertise, and exceptional customer service. Thank you Paul for a job well done!
Bochiş Răzvan2 years ago
★★★★★
Thank you Paul for all the professionalism you show, for all the patience and all the help you give me. I highly recommend!
Daniela Pasc2 years ago
★★★★★
The collaboration I have had since the beginning, that is, for several years, with Cittago is a real pleasure! I turned to Paul to rebuild the website of a small dental clinic and I am extremely satisfied with the collaboration. Paul is still taking care of the website. The promptness with which he responds to me, the patience with which he explains everything I don't understand (and there are many, believe me 😂🙈), his maximum involvement and desire to give his best have always helped me and given me a lot of confidence in him. He is always there when I need him. Very professional! And the quality-price ratio is unbeatable. I recommend Paul with confidence, if you want someone who really puts his heart into what he does and gives his best!
Daniela Chis2 years ago
★★★★★
I have had the pleasure of working with Paul and Cittago on several websites. From the initial discussion to the launch of the website, I was impressed by their professionalism, expertise, and dedication to creating an exceptional product to launch online that we can all be proud of. Paul took the time to truly understand what I wanted, what my brand meant, what my target audience was, and what my goals were. Using his knowledge, he was able to create a user-friendly, visually beautiful, responsive (on both mobile and desktop) website that communicates the services and products we offer very well. The website not only looks great, but it works just as well. Throughout the process, Paul was receptive to feedback, and patiently answered all the requests I had. We appreciated his vast knowledge (about website creation, SEO, social media connection, visual experience), his expertise in applying it, his patience, transparency, and his ability to successfully complete such a project, which was very important to us. For these reasons, I highly recommend this company and the services it offers.
Aissa Suciu2 years ago
·First paint — when something appeared·Server response — before anything could load·Page ready — when you could interactSpeed details