WPML
状态
已解决
报告针对
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' ];

所有已知问题 →