WordPress: ошибка при входе на сайт

Тема в разделе "Программирование", создана пользователем СпетровичС, 23.08.24.

  1. СпетровичС

    СпетровичС Новичок

    3
    0
    Уважаемые!При входе на сайт выскакивает сообщение "Warning: Invalid argument supplied for foreach() in /var/www/u0357735/data/www/gl.spb.ru/wp-content/plugins/solazu-unyson/framework/includes/option-types/typography-v2/class-slz-option-type-typography-v2.php on line 145

    Может ли кто помочь?Строка кода(145) с восклицательными знаками.

    public function get_google_font( $font ) {
    $fonts = $this->get_fonts();

    foreach ( $fonts['google']['items'] as $g_font ) { !!!!!!!!!!!!!!!!!!!!!!!!!
    if ( $font === $g_font['family'] ) {
    return $g_font;
    }
    }

    return false;
     
  2. Pashtet

    Pashtet Активный участник

    37.995
    5.432
    Ошибка, которую вы видите, возникает из-за того, что в коде предполагается, что переменная $fonts['google']['items'] является массивом, но на самом деле это может быть null или не инициализированное значение. Чтобы исправить это, нужно добавить проверку перед использованием массива в foreach.

    Вот как можно исправить этот код:

    php
    public function get_google_font( $font ) {
    $fonts = $this->get_fonts();

    // Добавляем проверку на существование и тип данных
    if (isset($fonts['google']['items']) && is_array($fonts['google']['items'])) {
    foreach ( $fonts['google']['items'] as $g_font ) {
    if ( $font === $g_font['family'] ) {
    return $g_font;
    }
    }
    }

    return false;
    }

    Объяснение изменений:
    1. isset($fonts['google']['items']): Эта проверка гарантирует, что ключ items существует в массиве $fonts['google'].
    2. is_array($fonts['google']['items']): Эта проверка гарантирует, что значение $fonts['google']['items'] является массивом. Если это не массив, цикл foreach не будет выполняться, что предотвратит ошибку.
    Эти изменения должны устранить предупреждение и сделать код более устойчивым к подобным проблемам.
     
  3. СпетровичС

    СпетровичС Новичок

    3
    0
    Благодарю!
    Как я понял, надо вставить эти две новые строки в скрипт и посмотреть. Попробую.
    А Вы можете предположить из-за чего это произошло на фоне " я ничего не менял!"?
     
  4. Bern

    Bern Активный участник

    549
    35
    Ни чего себе тут заморочки!

    Паштет, откуда ты знаешь эту хреноту?
     
  5. Pashtet

    Pashtet Активный участник

    37.995
    5.432
    Причин может быть масса.
    Ты главное попробуй исправить, как описано выше. И дай знать.

    ;)
     
  6. sema

    sema Активный участник

    18.029
    2.118
    чатгпт - видно же
    $fonts = $this->get_fonts(); шрифты не приходят видимо.
     
  7. СпетровичС

    СпетровичС Новичок

    3
    0
    После двух тех строк вышла новая ошибка Warning: require(/var/www/u0357735/data/www/gl.spb.ru/wp-content/plugins/solazu-unyson/framework/includes/option-types/typography-v2/class-slz-option-type-typography-v2.php): failed to open stream: No such file or directory in /var/www/u0357735/data/www/gl.spb.ru/wp-content/plugins/solazu-unyson/framework/includes/option-types/init.php on line 34
    И сайт не грузится.
    Строка на которую ссылается первая из этого скрипта
    wp_localize_script(
    'slz-option-' . $this->get_type(),
    'slz_typography_v2_fonts',
    $this->get_fonts()


    была такая мысль, но почему только одному сайту?......
     
  8. sema

    sema Активный участник

    18.029
    2.118
    @СпетровичС, пхпшник нужен. или гугли, если проблема массовая можно найти решение.
     
  9. Дмитрий Н

    Дмитрий Н Активный участник

    2.204
    430
    @E13, ты куды пропал? Твоя тема :)