- 상태
- 해결됨
- 보고된 제품
- WPML Multilingual CMS 4.4.6
- 해결된 버전
- WPML 4.4.8
문제 개요
사이트 관리 화면에서 사용자 정의 또는 위젯 페이지로 이동하면 빈 페이지나 치명적인 오류가 표시됩니다:
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:97
임시 해결 방법
- 진행하기 전에 사이트를 전체 백업하세요.
- /wp-content/plugins/sitepress-multilingual-cms/classes/widgets/class-wpml-widgets-support-backend.php 파일을 여세요.
- 변경 전:
'selected_language' => Obj::propOr( 'all', 'wpml_language', $instance ),
- 변경 후:
'selected_language' => Obj::propOr( 'all', 'wpml_language', is_array( $instance ) ? $instance : [] ),
- 사용자 정의 옵션 및/또는 위젯을 편집하세요.
- 편집이 완료되면 2단계에서 추가한 코드를 제거하세요.
- 다음 파일을 여세요: wp-content/plugins/sitepress-multilingual-cms/sitepress.class.php
- 변경 전:
$post_types = get_post_types( $args, 'objects' ); foreach ( $post_types as $name => $attrs ) { $slug = trim( Obj::pathOr( '', [ 'rewrite', 'slug' ], $attrs ), '/' ); if ( $slug && isset( $vars[ $slug ] ) ) { $post_type = $name; $post_slug = $vars[ $slug ]; break; } } - 변경 후:
$post_types = get_post_types( $args, 'objects' ); foreach ( $post_types as $name => $attrs ) { if ( $attrs->rewrite == false ) { break; } $slug = trim( Obj::pathOr( '', [ 'rewrite', 'slug' ], $attrs ), '/' ); if ( $slug && isset( $vars[ $slug ] ) ) { $post_type = $name; $post_slug = $vars[ $slug ]; break; } }