- 状态
- 已解决
- 报告针对
- WPForms Multilingual 0.3.5
- 解决于
- WPForms Multilingual 0.3.6
- 主题标签
- Compatibility
问题概述
如果您正在使用 WPForms 并且最近已更新至 1.8.5.1,且您的网站在 PHP8 环境下运行,您可能会在 debug.log 信息中遇到以下错误:
PHP Fatal error: Uncaught TypeError: strlen(): Argument #1 ($str) must be of type string, array given in .../wp-includes/formatting.php:3557
临时解决方法
建议遇到此问题的客户回退至WPForms 1.8.4,直至发布修复版本。
否则,请在继续操作前确保已对站点进行完整备份。
- 打开 …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Notifications.php文件。
- 找到第 70 行。
- 将:
public function applyEmailTranslations( $data, $emails ) { $package = $this->newPackage( $this->getId( $emails->form_data ) ); do_action( 'wpml_switch_language_for_email', $data['to'] ); $dataKeys = [ 'subject', 'message' ]; - 替换为:
public function applyEmailTranslations( $data, $emails ) { $package = $this->newPackage( $this->getId( $emails->form_data ) ); if (is_array($data['to'])){ foreach ($data['to'] as $address){ do_action( 'wpml_switch_language_for_email', $address ); } } else { do_action( 'wpml_switch_language_for_email', $data['to'] ); } $dataKeys = [ 'subject', 'message' ];