WP Mail SMTP by WPForms 與 PHP 8.0 不相容的問題
Last Updated on September 29, 2022
WordPress 5.6 已發 (2020/12/8) 佈一段時間,5.6 版本也開始支援 PHP 8.0 (2020/11/27 日發佈),不過,至今 WP Mail SMTP by WPForms 2.5.1 版本還是沒有支援 PHP 8.0 版,但在官方 Support 看到解法,(官方說明會在下一個版本 (2.5.2) 更新,但沒有明確時間。
WPForms
如果,你還不想等官方發佈修正版本,可以參考官方公佈的修正方式,與 PHP 8.0 相容。
.../wp-content/plugins/wp-mail-smtp/vendor_prefixed/symfony/polyfill-mbstring/Resources/
增加一個 mb_convert_variables.php8 文件,如下:
.../wp-content/plugins/wp-mail-smtp/vendor_prefixed/symfony/polyfill-mbstring/Resources/mb_convert_variables.php8
mb_convert_variables.php8 代碼
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use WPMailSMTP\Vendor\Symfony\Polyfill\Mbstring as p;
if (!function_exists('mb_convert_variables')) {
/**
* Convert character code in variable(s)
*/
function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars)
{
$vars = [&$var, ...$vars];
$ok = true;
array_walk_recursive($vars, function (&$v) use (&$ok, $to_encoding, $from_encoding) {
if (false === $v = p\Mbstring::mb_convert_encoding($v, $to_encoding, $from_encoding)) {
$ok = false;
}
});
return $ok ? $from_encoding : false;
}
Photo by Safar Safarov on Unsplash