WooCommerce on PHP 8.6: deprecation notices and the fix

On PHP 8.6 (due 19 November 2026), WooCommerce 11.2.1 logs deprecation notices when the affected code runs. We found 5 places in its code that PHP 8.6 flags. Nothing stops working; the notices go to your PHP error log and show on pages where errors are displayed.

Tested on 28 October 2026 with the official PHP 8.6.0RC4 build and WordPress 7.1.1, plugin version 11.2.1 (7,000,000+ active installs) from WordPress.org, activated alone with default settings.

The messages you will see

Deprecated: Calling is_a() with a string when $allow_string is false
Deprecated: Returning a value from a constructor is deprecated
Deprecated: Function is_integer() is deprecated since 8.6, use is_int() instead
Deprecated: Function spl_object_hash() is deprecated since 8.6, consider using spl_object_id() instead

Where they come from

File:lineWhatWhen PHP 8.6 complainsIn our WordPress test
includes/abstracts/abstract-wc-data.php:981calls is_a() with a stringSeen in our testin wp-admin
src/Admin/API/Reports/GenericQuery.php:50returns a value from a constructorCompile time: logged when PHP loads the filenot on the pages we opened
src/Internal/ProductDownloads/ApprovedDirectories/Admin/UI.php:209calls is_integer() / is_long()
if ( is_integer( $upserted ) ) {
When this code runsnot on the pages we opened
src/Utilities/CallbackUtil.php:46calls spl_object_hash()
return 'Closure@' . spl_object_hash( $callback );
When this code runsnot on the pages we opened
vendor/opis/json-schema/src/SchemaLoader.php:442 (bundled library)calls spl_object_hash()
$data = spl_object_hash($data);
When this code runsnot on the pages we opened

The fix

Site owners: you don't need to change anything to keep the site working. Keep display_errors off on the live site, and update WooCommerce when a release mentions PHP 8.6. If a notice shows on your pages, set define( 'WP_DEBUG_DISPLAY', false ); in wp-config.php.

Plugin developers, line by line:

What a PHP 8.6 deprecation notice does, and what it doesn't

All 39 affected plugins out of the 100 most popular, and the 61 with no findings: PHP 8.6 and WordPress plugins.

Sources

Did this fix it?

What's still not working?

Describe what happens and paste any error message. We read every report and fix the page.