Home  >  Article  >  CMS Tutorial  >  Compatibility of WordPress plugins, themes and PHP8

Compatibility of WordPress plugins, themes and PHP8

藏色散人
藏色散人forward
2020-12-14 14:48:573910browse

The following column WordPress Tutorial will introduce to you the compatibility of WordPress plug-ins, themes and PHP8. I hope it will be helpful to friends in need!

Compatibility of WordPress plugins, themes and PHP8

About WordPress plugins, themes and PHP 8 compatibility

PHP8 was released on November 26, 2020, WordPress core writer Jonathan De Jonathan Desrosiers published an article on the "Making WordPress Core" blog about the impact of PHP8 on WordPress. From the article, it can be confirmed that the current version of WordPress is not guaranteed to run perfectly in PHP8, especially with numerous themes. And plug-in compatibility is even more unpredictable. WordPress 5.6, which will be released on December 8, 2020, is only a transitional version of PHP8, so do not try to upgrade to use PHP8 on your WordPress website at the moment.

Recommended related articles: "PHP8 is officially released"

The following is a machine translation.

PHP 8 Introduced

PHP 8 is the next major update to our favorite scripting language. While previous PHP versions didn’t have much of a negative impact on the WordPress ecosystem, this update has some breaking changes that may affect backward compatibility. It should also be noted that many features that were deprecated in PHP 7.x will now be removed in PHP 8.

The State of WordPress Core

In his post, Desrosiers highlighted the work being done to keep the core software up to date. "WordPress Core is targeting PHP 8.0 compatibility in version 5.6 (currently scheduled for December 8, 2020)," he wrote.

However, this does not mean that it is safe to upgrade to PHP 8 when WordPress 5.6 is released. WordPress rarely runs just on its own and usually relies on at least one theme and plugin collection as a blog or website. Therefore, he states, "The status of PHP 8 support in the broader ecosystem (plugins, themes, etc.) is impossible to know. Therefore, WordPress 5.6 should be considered "beta compatible" with PHP 8.

This means, essentially, that WordPress cannot be considered fully compliant until most major themes and plugins are PHP 8 compliant.

Understand how PHP 8 affects yours Plugin or Theme

Companies like Yoast have been preparing for this for a while. In late October, Yoast CTO Omar Reis spoke with fellow writer Juliette Linders-Folmer ( Juliette Reinders Folmer, Yoast DevOps manager Erre Groen, maintainer of the WordPress coding standards sniffer for PHPCS, compiled and published a comprehensive WordPress/PHP 8 compatibility report.

While I strongly It is recommended that you take the time to read through the entire report, but it does outline the main reasons why the PHP 8 upgrade will have such a huge impact on large WordPress sites, especially the plugin and theme ecosystem.

However, PHP 7.* versions look The amount of deprecations is much greater than in previous versions of PHP. PHP 5.6 to PHP 7 is a relatively simple migration, going from 7.x to 8 can be very painful, especially for very old code bases like WordPress and the many available Plugins. For well-typed codebases or codebases that have always kept the latest PHP version, there are no issues.

As a maintainer of some plugins, some built on code from eight years ago, The concern is that this upgrade could cause website outages.

How to Prepare

I asked Reese and Fulmer what plugin and theme developers can What to do to prepare, they shared some pointers.

First of all, developers should inform themselves about the changes in PHP 8: read the Make post about PHP 8, read the Yoast PHP8 Compatibility Report, read the PHP Manual section "Migrating from PHP 7.4 to PHP 8.0" and possibly dig deeper by reading the upgrade documentation in the PHP 8 branch and the RFCs for PHP 8.

Some available tools can be used to help find incompatibilities:

  • Run PHP flange on PHP8 via command (make sure to loop through all files) or using PHP parallel lint.php -l

  • Running PHP Compatible on Code: It should be noted that almost all PHP 8 related smells are in the not-yet-released version of PHP Compatible version 10.0.0, so one will need to use forks or work through Composer until version 10.0.0 is released. developdev-develop

  • Run unit/integration tests for plugins or themes on PHP 8 and fix any issues that go wrong. This usually means that the test suite first needs to be compatible with PHPUnit 9.3. The PHPUnit Polyfills package and the WP Test Utils package (both released under the Yoast GitHub organization) can help with this. It is also important to note that for this type of testing to have reliable performance, considerable test coverage is required.

  • Run WordPress unit tests and WordPress e2e tests, activate plugins, and fix any issues that arise.

  • Check if the (strict) code coverage of this test is high enough, if not, add more tests, making sure both happy and unhappy paths are covered.

  • If you don't have tests, test everything manually, paying special attention to "unpleasant paths", and expect to receive bug reports for the foreseeable future. In the meantime, it might be a good idea to look into implementing unit/integration tests for plugins or themes.

There’s still time, but it’s running out

As Desrosiers pointed out in the “Made” post, WordPress only officially targets Have PHP8 ready when 5.6 is released in early December. This may mean that many WordPress-focused hosting companies will only consider offering upgrades to their customers once WordPress core becomes compatible. So as plugin and theme developers we have some time to test our products and get them ready, but the window is closing fast.

Luckily, the latest knowledge and tools are out there. We just need to put them into action.

The above is the detailed content of Compatibility of WordPress plugins, themes and PHP8. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:zmingcx.com. If there is any infringement, please contact admin@php.cn delete