- 상태
- 해결됨
- 보고된 제품
- WPML String Translation 3.1.2
- 해결된 버전
- String Translation 3.1.3
문제 개요
WPML 문자열 번역 3.1.2로 업데이트한 후 다음 오류가 발생할 수 있습니다:
[17-Sep-2020 10:51:21 UTC] PHP Fatal error: Uncaught InvalidArgumentException: item should be a Collection or an array or an object in .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php:94
Stack trace:
#0 [internal function]: WPMLFPObj::WPMLFP{closure}(NULL, 'attachment_id', false)
#1 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/functions.php(141): call_user_func_array(Object(Closure), Array)
#2 [internal function]: WPMLFPObj::WPMLFP{closure}(NULL, 'attachment_id', false)
#3 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/collect/src/Illuminate/Support/Traits/Macroable.php(56): call_user_func_array(Object(Closure), Array)
#4 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php(78): WPMLFPObj::__callStatic('propOr', Array)
#5 [internal function]: WPMLFPObj::WPMLFP{closure}('attachment_id', false)
#6 .../wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/f in /home/add/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php on line 94
임시 해결 방법
- 사이트를 전체 백업하세요.
- wpml-string-translation/inc/admin-texts/wpml-admin-texts.class.php 파일을 여세요.
- 255번째 줄을 찾으세요.
- 다음 코드를:
private function isAdminText( $key, $name ) { return null !== Wrapper::of( $this->getSubKey( $key, $name ) ) ->map( [ self::class, 'getKeysParts' ] ) ->map( invoke( 'reduce' )->with( flip( Obj::prop() ), $this->getOptionNames() ) ) ->get(); } - 다음과 같이 변경하세요:
private function isAdminText($key, $name) { try { return null !== Wrapper::of($this->getSubKey($key, $name)) ->map([self::class, 'getKeysParts']) ->map(invoke('reduce')->with(flip(Obj::prop()), $this->getOptionNames())) ->get(); } catch (Exception $ex) { error_log($ex->getMessage() . ' Option Key ' . $key); } }