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

所有已知问题 →