- ステータス
- 解決済み
- 報告対象
- Advanced Custom Fields Multilingual 2.1.2
- 解決されたバージョン
- Advanced Custom Fields Multilingual 2.1.3
- 関連するプラグイン/テーマ
- Advanced Custom Fields (ACF)
- トピックタグ
- ATE, Bug, Compatibility
問題の概要
カスタム投稿タイプやカスタムタクソノミーの登録にAdvanced Custom Fieldsプラグインを使用している場合、これらのオブジェクトのいずれかに破損したデータが保存されていると、PHP 8を使用する環境では致命的なエラーが、PHP 7では警告が発生する可能性があります。
PHP Fatal error: Uncaught TypeError: array_walk(): Argument #1 ($array) must be of type array, null given in .../wp-content/plugins/acfml/classes/Strings/Helper/ContentTypeLabels.php:55
回避策
続行する前に、サイトの完全なバックアップを取得していることを確認してください。
オプション1
Advanced Custom Fields Multilingualを無効にした状態で、問題のあるACF投稿タイプまたはタクソノミーを編集し、ラベルまたはオブジェクトスラッグの欠落している値を設定して保存します。その後、Advanced Custom Fields Multilingualを有効化すると、すべて正常に機能します。オプション2
- …/wp-content/plugins/acfml/classes/Strings/Helper/ContentTypeLabels.phpファイルを開きます。
- 53行目を探します。
- 次のコードを:
array_walk( $objectArgs['labels'], function( &$value, $key ) use ( $translatedLabels ) { $value = Obj::propOr( $value, $key, $translatedLabels ); } ); - 次のコードに置き換えます:
$labels = Obj::propOr( [], 'labels', $objectArgs ); array_walk( $labels, function( $value, $key ) use ( &$objectArgs, $translatedLabels ) { $objectArgs['labels'][ $key ] = Obj::propOr( $value, $key, $translatedLabels ); } );