Commit 145c887cef6 for woocommerce
commit 145c887cef6a6b426ac230993bf3935f513673b9
Author: Luigi Teschio <gigitux@gmail.com>
Date: Tue Aug 4 10:43:05 2026 +0200
Fix order list compatibility with WordPress 7.1 (#67345)
* Fix order list compatibility with WordPress 7.1
* Add changelog entry for WordPress 7.1 order list fix
* Document WordPress 7.1 row header handling
* add comment
* fix selector
* fix code
diff --git a/plugins/woocommerce/changelog/fix-order-list-wordpress-71-compatibility b/plugins/woocommerce/changelog/fix-order-list-wordpress-71-compatibility
new file mode 100644
index 00000000000..ad10f01ca5f
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-order-list-wordpress-71-compatibility
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Fix order list checkbox interactions and responsive layout with WordPress 7.1.
diff --git a/plugins/woocommerce/client/legacy/css/admin.scss b/plugins/woocommerce/client/legacy/css/admin.scss
index 0d252ec412f..d9724ef2996 100644
--- a/plugins/woocommerce/client/legacy/css/admin.scss
+++ b/plugins/woocommerce/client/legacy/css/admin.scss
@@ -3223,7 +3223,7 @@ body.woocommerce_page_wc-orders {
border-top: 1px solid #f5f5f5;
}
- tbody tr:hover:not(.status-trash):not(.no-link) td {
+ tbody tr:hover:not(.status-trash):not(.no-link) > :not(.check-column) {
cursor: pointer;
}
@@ -3554,7 +3554,7 @@ body.woocommerce_page_wc-orders {
width: 100%;
}
- td.column-order_number {
+ .column-order_number {
.toggle-row {
height: 20px;
}
@@ -3574,7 +3574,7 @@ body.woocommerce_page_wc-orders {
}
tr:not(.is-expanded) {
- td.column-order_number {
+ .column-order_number {
vertical-align: top;
a.order-view {
diff --git a/plugins/woocommerce/client/legacy/js/admin/wc-orders.js b/plugins/woocommerce/client/legacy/js/admin/wc-orders.js
index a23e7d8ae76..40408a54f86 100644
--- a/plugins/woocommerce/client/legacy/js/admin/wc-orders.js
+++ b/plugins/woocommerce/client/legacy/js/admin/wc-orders.js
@@ -9,10 +9,19 @@ jQuery( function( $ ) {
* WCOrdersTable class.
*/
var WCOrdersTable = function() {
+
+ const SELECTORS = [
+ // WordPress 7.1 renders primary order cells as th instead of td.
+ ".post-type-shop_order .wp-list-table tbody td:not(.check-column)",
+ ".post-type-shop_order .wp-list-table tbody th:not(.check-column)",
+ ".woocommerce_page_wc-orders .wp-list-table.orders tbody td:not(.check-column)",
+ ".woocommerce_page_wc-orders .wp-list-table.orders tbody th:not(.check-column)"
+ ]
+
$( document )
.on(
'click',
- '.post-type-shop_order .wp-list-table tbody td, .woocommerce_page_wc-orders .wp-list-table.orders tbody td',
+ SELECTORS.join( ', ' ),
this.onRowClick
)
.on( 'click', '.order-preview:not(.disabled)', this.onPreview );
diff --git a/plugins/woocommerce/tests/e2e/tests/order/order-list-hidden-columns-small-screen.spec.ts b/plugins/woocommerce/tests/e2e/tests/order/order-list-hidden-columns-small-screen.spec.ts
index 0895d6eabe0..bb78b499ab1 100644
--- a/plugins/woocommerce/tests/e2e/tests/order/order-list-hidden-columns-small-screen.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/order/order-list-hidden-columns-small-screen.spec.ts
@@ -45,13 +45,11 @@ test.describe(
await page.goto( 'wp-admin/admin.php?page=wc-orders' );
const dateCopy = page
- .locator(
- 'td.column-order_number .order_date.small-screen-only'
- )
+ .locator( '.column-order_number .order_date.small-screen-only' )
.first();
const statusCopy = page
.locator(
- 'td.column-order_number .order_status.small-screen-only'
+ '.column-order_number .order_status.small-screen-only'
)
.first();
diff --git a/plugins/woocommerce/tests/e2e/tests/product/product-reviews.spec.ts b/plugins/woocommerce/tests/e2e/tests/product/product-reviews.spec.ts
index 8e837c87173..b3a88a1f566 100644
--- a/plugins/woocommerce/tests/e2e/tests/product/product-reviews.spec.ts
+++ b/plugins/woocommerce/tests/e2e/tests/product/product-reviews.spec.ts
@@ -195,8 +195,13 @@ test.describe( 'Product Reviews', () => {
const reviewRow = page.locator( `#comment-${ review.id }` );
+ // WordPress 7.1 renders primary list-table cells as row headers.
await expect(
- reviewRow.getByRole( 'cell', { name: updatedReview } )
+ reviewRow.getByRole( 'cell', { name: updatedReview } ).or(
+ reviewRow.getByRole( 'rowheader', {
+ name: updatedReview,
+ } )
+ )
).toBeVisible();
await expect(
reviewRow.getByLabel( `${ updatedRating } out of 5` )
@@ -325,8 +330,13 @@ test.describe( 'Product Reviews', () => {
).toBeTruthy();
await page.getByRole( 'button', { name: 'Undo' } ).click();
+ // WordPress 7.1 renders primary list-table cells as row headers.
await expect(
- reviewRow.getByRole( 'cell', { name: review.review } )
+ reviewRow.getByRole( 'cell', { name: review.review } ).or(
+ reviewRow.getByRole( 'rowheader', {
+ name: review.review,
+ } )
+ )
).toBeVisible();
await reviewRow.getByRole( 'button', { name: 'Trash' } ).click();
@@ -345,8 +355,13 @@ test.describe( 'Product Reviews', () => {
await page.click( 'a[href*="comment_status=trash"]' );
+ // WordPress 7.1 renders primary list-table cells as row headers.
await expect(
- reviewRow.getByRole( 'cell', { name: review.review } )
+ reviewRow.getByRole( 'cell', { name: review.review } ).or(
+ reviewRow.getByRole( 'rowheader', {
+ name: review.review,
+ } )
+ )
).toBeVisible();
await page.goto(