Ошибка Notice: Trying to access array offset on value of type null in

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

После переноса сайта на другой хостинг возникла следующая ошибка

Notice: Trying to access array offset on value of type null in /home/mysites/public_html/my-site.com/wp-content/themes/soledad/inc/dashboard/lib/mb-settings-page/inc/settings-page-meta-box.php on line 162

На старом хостинге стоял php 7.2.34

На новом хостинге php 7.4

Перевод ошибки

Попытка получить доступ к смещению массива по значению типа null

Исправление ошибки

Ошибка возникла в функции is_edit_screen


/**
* Check if we're on the right edit screen.
*
* @param WP_Screen $screen Screen object. Optional. Use current screen object by default.
*
* @return bool
*/
public function is_edit_screen( $screen = null ) {
  return in_array( $this->page_args['id'], $this->meta_box['settings_pages'] );
}

Собственно ошибка пошла из-за того что один из аргументов имеет значение null, и надо поставить перед выполнением in_array проверку аргументов на существование, и если оба аргумента есть, тогда делать поиск в массиве.

Измененный код


public function is_edit_screen( $screen = null ) {
  $r = false;
  if(isset($this->page_args['id'])){
    $needle = $this->page_args['id'];
  }else{
    return $r;
  }

  if (isset($this->meta_box['settings_pages'])){
    $haystack = $this->meta_box['settings_pages'];
  }else{
    return $r;
  }

  $r = in_array( $needle, $haystack );
  return $r;
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *