- ステータス
- 解決済み
- 報告対象
- 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; } }