- 状态
- 已解决
- 报告针对
- 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 ); } );