PHP 8.4 deprecations from AC Pro during frontend-facing admin-ajax requests
Hello there!
Please let me report the following bug:
Plugin: Admin Columns Pro
Plugin slug: admin-columns-pro
Affected version observed: 7.0.11
Environment observed: WordPress 6.9.1, WooCommerce 10.5.3, PHP 8.4.18
Summary
On PHP 8.4, Admin Columns Pro emits repeated deprecations from its bundled php-di vendor tree.
The important part is the request context:
– this was not only seen in wp-admin page loads
– it was also observed during frontend-facing AJAX traffic hitting wp-admin/admin-ajax.php
– in the observed store, those requests were part of multilingual WooCommerce checkout flows
This suggests that the plugin is being initialized broadly enough to affect frontend-adjacent AJAX requests where its functionality is not needed.
Why this matters
In the observed production log, Admin Columns Pro accounted for 260272 entries, making it one of the largest operational noise sources in the stack.
That has two concrete effects:
1. debug.log becomes harder to use for real incident analysis.
2. PHP 8.4 compatibility issues from a backend-oriented plugin leak into high-churn frontend-adjacent request paths.
Reproduction
1. Run WordPress on PHP 8.4.
2. Enable WP_DEBUG and WP_DEBUG_LOG.
3. Use Admin Columns Pro 7.0.11.
4. Trigger frontend flows that perform AJAX requests through wp-admin/admin-ajax.php.
5. Inspect debug.log.
In the observed production environment, fresh log bursts correlated with multilingual checkout-related requests around:
– POST /wp-admin/admin-ajax.php
– POST /?wc-ajax=update_order_review
– POST /wp-content/plugins/translatepress-multilingual/includes/trp-ajax.php
Actual result
PHP logs repeated deprecations from the bundled php-di code, for example:
AC\Vendor\DI\Container::__construct(): Implicitly marking parameter $proxyFactory as nullable is deprecated
AC\Vendor\DI\Definition\ObjectDefinition::__construct(): Implicitly marking parameter $className as nullable is deprecated
AC\Vendor\DI\Definition\Resolver\ParameterResolver::resolveParameters(): Implicitly marking parameter $definition as nullable is deprecated
Expected result
Admin Columns Pro should be PHP 8.4 clean, and ideally should not fully initialize in frontend-facing AJAX contexts where its functionality is not required.
Affected code paths observed
Examples from:
admin-columns/vendor/php-di/php-di/src/functions.php
admin-columns/vendor/php-di/php-di/src/Container.php
admin-columns/vendor/php-di/php-di/src/Definition/ObjectDefinition.php
admin-columns/vendor/php-di/php-di/src/Definition/Resolver/ParameterResolver.php
Technical notes
– No plugin-specific scheduled cron hooks were found for Admin Columns Pro, so this does not currently look like a cron-only issue.
– The strongest correlation was with frontend-adjacent AJAX traffic, not with normal wp-admin use alone.
– This points either to:
– a bundled dependency compatibility gap for PHP 8.4
– or overly broad plugin bootstrap in requests that do not need Admin Columns functionality
Suggested direction
Two improvements would likely resolve the operational issue:
1. Update or patch the bundled php-di dependency for PHP 8.4 compatibility.
2. Revisit bootstrap conditions so the plugin does not initialize unnecessarily on unrelated frontend AJAX requests.
Notes
– This was observed on a real production WooCommerce site with multilingual checkout traffic.
– No claim is made that Admin Columns Pro directly breaks checkout behavior; the current issue is repeated PHP 8.4 deprecation noise and unnecessary execution scope.
You must be logged in to reply to this topic.