WPML
상태
해결됨
보고된 제품
WPML Multilingual CMS 4.7.4
해결된 버전
WPML 4.7.5
관련 플러그인/테마
Elementor
주제 태그
Compatibility

문제 개요

WPML을 업데이트한 후, Elementor문자열 번역 플러그인이 활성화된 경우 일부 WooCommerce 상품 페이지에서 치명적인 오류가 발생할 수 있습니다. 이 문제는 WPML의 Elementor 통합 기능이 null 데이터를 직렬화하려고 할 때 발생하며, 이로 인해 치명적인 TypeError이(가) 발생합니다.

PHP Fatal error: Uncaught TypeError: WPML\PB\Elementor\DataConvert::serialize(): Argument #1 ($data) must be of type array,

null given, called in /wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/QueryFilter.php on line 34 ...

임시 해결 방법

진행하기 전에 전체 사이트 백업을 완료했는지 확인하세요.


  • …/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/Hooks/QueryFilter.php 파일을 여세요.

  • 28번 줄을 찾으세요.

  • 다음을:
    	public function translateQueryIds( $value, $object_id, $meta_key, $single ) {
    		if ( WPML_Elementor_Data_Settings::META_KEY_DATA === $meta_key && $single ) {
    			$value = get_post_meta( $object_id, WPML_Elementor_Data_Settings::META_KEY_DATA, true );
    			if ( $value ) {
    				$value = DataConvert::unserialize( $value, false );
    				$value = $this->recursivelyTranslateQueryIds( $value );
    				$value = DataConvert::serialize( $value, false );
    			}
    		}
    
    		return $value;
    	}
            


  • 다음으로 변경하세요:
    	public function translateQueryIds( $value, $object_id, $meta_key, $single ) {
    		if ( WPML_Elementor_Data_Settings::META_KEY_DATA === $meta_key && $single ) {
    			$newValue = get_post_meta( $object_id, WPML_Elementor_Data_Settings::META_KEY_DATA, true );
    			if ( $newValue ) {
    				$newValue = DataConvert::unserialize( $newValue, false );
    
    				if ( is_array( $newValue ) ) {
    					$newValue = $this->recursivelyTranslateQueryIds( $newValue );
    					return DataConvert::serialize( $newValue, false );
    				}
    
    				return $value;
    			}
    		}
    
    		return $value;
    	}
            


개발팀에서 이 문제를 패치하기 위한 새 릴리스를 이미 작업 중입니다.

알려진 모든 문제 →