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 );
    } );

Все известные проблемы →