• Cycling enthusiasts, bicycle mechanics, and anyone curious about bikes (or computers)? You're in the right place!

    Register for a free account and dive into the discussions.

    Our forum works with an AdBlocker, but if you’d like to support us, consider backing us on Patreon.

WordPress plugins incompatible with PHP 8.4

Advert

BikeGremlin

Cycling Icon
Wheel Wizard
I tested my WordPress sites to see how they fare with PHP 8.4.

For testing locally, Laragon 6 is still free and still works (my install and setup tutorial for Laragon 6 and latest PHP), while you can always use Local or LAMP for Linux (I don't use Macs, I'm poor, so I don't know what to recommend to Mac users :) ).

The GeneratePress theme works fine, and so does the latest & greatest WordPress version (6.7.2 at the time of writing). Some plugins, however, show PHP warnings (they work, but the code needs to be updated).

General conclusion: it works, for the most part​

I haven't tested many themes, but did test many plugins. Maybe some themes and plugins won't work - but I would say that generally (very generally):
If thera aren't any warnings with PHP versions before the 8.x, it should not show any breaking errors with PHP 8.x (including the 8.4).

What I ran into were in fact only warnings - no breaking errors, at least not with the (good quality) plugins I tested. Here is a brief overview of the warnings I got:

PHP Notice: Translation Loading Too Early​

Affected Plugin: WP YouTube Lyte.
Error: _load_textdomain_just_in_time was called incorrectly.
Fix: Ensure translations are loaded at the init hook instead of earlier.

PHP Deprecated: Implicitly Marking Parameters as Nullable​

Affected Plugins: Easy WP SMTP (and its ActionScheduler - WooCommerce dependency), and One Click Accessibility.
Error: "Implicitly marking parameter $variable_name as nullable is deprecated, the explicit nullable type must be used instead".
Fix: Plugins need to be updated to explicitly define nullable types (e.g. ?DateTimeInterface $date instead of $date = null).

PHP Warning: Trying to access an array without checking it exists​

Affected plugins: Easy Table of Contents.
Error: Trying to access the array key "heading_label_tag" without checking if it exists first.
Fix: Check if the heading_label_tag key is set in the $settings array before trying to access it, thus preventing the warning.

PHP Deprecated: Explicit nullable type declarations required​

Affected plugins: User Menus – Nav Menu Visibility, and Pods – Custom Content Types and Fields.
Error: PHP 8.4 requires explicit nullable type declarations. This means parameters that can be null must be explicitly marked as nullable using the ? syntax.
Fix: For each of used functions, parameter declaration should be explicitly marked as nullable.

As always, your additions and especially corrections are more than welcome (and appologies for my Tarzan English :) ).
 
Last edited:

1. Full error logs for the PHP Notice: Translation Loading Too Early​

PLUGIN: WP YouTube Lyte​

PHP Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-youtube-lyte domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information.

2. Full error logs for the Implicitly Marking Parameters as Nullable​

PLUGIN: Easy WP SMTP​

PHP Deprecated: ActionScheduler_Store::save_action(): Implicitly marking parameter $scheduled_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php on line 29
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_Store::stake_claim(): Implicitly marking parameter $before_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php on line 188
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_Store::get_scheduled_date_string(): Implicitly marking parameter $scheduled_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php on line 257
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_Store::get_scheduled_date_string_local(): Implicitly marking parameter $scheduled_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php on line 274
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_DBStore::save_unique_action(): Implicitly marking parameter $scheduled_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php on line 55
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_DBStore::save_action(): Implicitly marking parameter $scheduled_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php on line 68
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_DBStore::save_action_to_db(): Implicitly marking parameter $date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php on line 82
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_DBStore::stake_claim(): Implicitly marking parameter $before_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php on line 795
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_DBStore::claim_actions(): Implicitly marking parameter $before_date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php on line 860
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: ActionScheduler_Logger::log(): Implicitly marking parameter $date as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/easy-wp-smtp/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Logger.php on line 28

PLUGIN: One Click Accessibility​

PHP Deprecated: Creation of dynamic property Pojo_A11y_Settings::$_page_title is deprecated in /home/my_user/public_html/wp-content/plugins/pojo-accessibility/includes/pojo-a11y-settings.php on line 636
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: Creation of dynamic property Pojo_A11y_Settings::$_page_menu_title is deprecated in /home/my_user/public_html/wp-content/plugins/pojo-accessibility/includes/pojo-a11y-settings.php on line 637
[18-Feb-2025 20:44:01 UTC] PHP Deprecated: Creation of dynamic property Pojo_A11y_Settings::$_menu_parent is deprecated in /home/my_user/public_html/wp-content/plugins/pojo-accessibility/includes/pojo-a11y-settings.php on line 638

3. Full error logs for PHP Warning: Trying to access an array without checking it exists​

PLUGIN: Easy Table of Contents​

PHP Warning: Undefined array key "heading_label_tag" in /home/my_user/public_html/wp-content/plugins/easy-table-of-contents/includes/class-eztoc-widgetsticky.php on line 271
 
Last edited:

4. Full error logs for PHP Deprecated: Explicit nullable type declarations required​

PLUGIN: User Menus – Nav Menu Visibility​

[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Freemius::maybe_activate_bundle_license(): Implicitly marking parameter $license as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/user-menus/freemius/includes/class-freemius.php on line 7979
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Freemius::set_license(): Implicitly marking parameter $license as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/user-menus/freemius/includes/class-freemius.php on line 12607
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Freemius::switch_to_blog(): Implicitly marking parameter $install as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/user-menus/freemius/includes/class-freemius.php on line 15808
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Freemius::_activate_addon_account(): Implicitly marking parameter $bundle_license as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/user-menus/freemius/includes/class-freemius.php on line 18280
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Freemius::_store_site(): Implicitly marking parameter $site as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/user-menus/freemius/includes/class-freemius.php on line 19838

Affected functions:​

maybe_activate_bundle_license() on line 7979
set_license() on line 12607
switch_to_blog() on line 15808
_activate_addon_account() on line 18280
_store_site() on line 19838

PLUGIN: Pods – Custom Content Types and Fields​

[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Container\Container_DI52::bind(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/src/Pods/Container/Container_DI52.php on line 55
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Container\Container_DI52::singleton(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/src/Pods/Container/Container_DI52.php on line 83
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::singleton(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 155
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::bind(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 533
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::singletonDecorators(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 579
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::getDecoratorBuilder(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 595
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::bindDecorators(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 629
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Container::instance(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Container.php on line 808
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\Resolver::resolveWithArgs(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/Resolver.php on line 177
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\Resolver::resolve(): Implicitly marking parameter $buildLine as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/Resolver.php on line 204
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\Resolver::cloneBuilder(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/Resolver.php on line 278
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\Factory::getBuilder(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/Factory.php on line 63
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\ClassBuilder::__construct(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/ClassBuilder.php on line 82
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\ClassBuilder::reinit(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/ClassBuilder.php on line 243
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\Prefixed\lucatume\DI52\Builders\ReinitializableBuilderInterface::reinit(): Implicitly marking parameter $afterBuildMethods as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/vendor/vendor-prefixed/lucatume/di52/src/Builders/ReinitializableBuilderInterface.php on line 29
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\REST\V1\Endpoints\Base::__construct(): Implicitly marking parameter $post_repository as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/src/Pods/REST/V1/Endpoints/Base.php on line 79
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\REST\V1\Endpoints\Base::__construct(): Implicitly marking parameter $validator as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/src/Pods/REST/V1/Endpoints/Base.php on line 79
[19-Feb-2025 07:02:32 UTC] PHP Deprecated: Pods\REST\V1\Endpoints\Base::get_by_args(): Implicitly marking parameter $request as nullable is deprecated, the explicit nullable type must be used instead in /home/my_user/public_html/wp-content/plugins/pods/src/Pods/REST/V1/Endpoints/Base.php on line 491
 

Support BikeGremlin

Help BikeGremlin stay online with a Patreon donation:

Advert
Back
Top Bottom