Вылезла ошибка после обновления. Решение проблемы WordPress версии 5.0.1 «Warning: Invalid argument supplied for foreach() in /wp-includes/blocks.php on line 183»
Если не хотите читать и вникать в решение, обращайтесь ко мне по адресу support@moreedez.ru — решим проблему за символические 1000 рублей.
Ошибка Invalid argument supplied for foreach() in /wp-includes/blocks.php
Обычно я WordPress не обновляю, «ученый» и знаю чем это оборачивается — тонны ошибок и часы ночных сидений в поисках исправления вордпресовских «обновлений». Но в этот раз решился, ставлю версию 5.0.1 (2..3)! Автоматическое обновления CMS WP у меня по дефолту отключено, словом, жму на ссылку обновления в админке и…
Первый фейл — новый редактор. Теперь нельзя просто взять перейти в админку и спокойно разместить текст редактора. Нужно добавлять блоки и прочую ерунду, как итог убил минут 30 на разбор полетов. В принципе новый блочный редактор WorddPress неплох, но я привык к минимализму и что надо, обычно, сам дописываю, с кодом проблем не возникало. Ладно, на это закрыл глаза.
Размещаю запись, всё красиво по феншую, перехожу на сайт а там ошибка:
«Warning: Invalid argument supplied for foreach() in /wp-includes/blocks.php on line 183»
Дело это не носит массового характера, потому что гугл выдал всего 4 ссылки на соответствующие запросу темы с оф. сайта WP и ряд «багнутых» сайтов с такими же ошибками. Решений там ни у кого не было, просили писать в тикеты. А владельцы сайтов почему-то не торопятся обращаться к специалистам для исправления. В общем на официальном сайте ВП предлагают выключить плагины. Я сделал больше и выпилил все свои наработки вроде вставки рекламных блоков через определённые параграфы, код который лежит в functions.php. В общем убрал всё, но ерор не решил.
В исходнике «/wp-includes/blocks.php» ничего аномального, но в новых классах разбираться не было и нет никаких желаний, поэтому решил окатить систему. Переходим к решению проблемы.
Устранение ошибки обновления WordPress
Это не совсем правильное решение проблемы и всё же — если сайт не работает а он у вас посещаемый и вы теряете доход, то вам не до разбирательств в коде и не до поиска человека который всё исправит. Поэтому самое быстрое возникшей ошибки «Warning: Invalid argument supplied for foreach()» после обновления WordPress до версии 5.0.1 в файле blocks.php — это восстановление бекапа!
Если есть на локалке — отличное! но залить файлы на сервер мало. Необходимо прогрузить и БД, иначе WP выдаст ошибдку мол код CMS Обновлен, поэтому нужно дообновиться — и вас опять вернёт к ошибке в block.php. Восстанавливаем файлы сайта на хостинг-сервере и базу данных и все вернётся к тому злосчастному моменту когда вы решили обновиться.
У меня получилось быстрей! Удобный хостинг sprinthost.ru в который я влюблен с первого знакомства с ним позволяет восстановить и файлы и БД в пару кликов, по времени процедура занимает не более 10 минут, в зависимости от сайта (в моем случае на «решение» ошибки обновлений ушло около 3 минут)
Заходим в админку, переходим в меню «Дополнительно», выбираем Резервные копии и папку которую нужно воссановить. Жмем соответствующую кнопку и ждем завершение.
Спринтхост автоматически каждый день создаем бекапы! так что если вы ещё не на нем — регистрируйтесь. Очень стабильный хостинг с серьёзными проектами на борту.
Совет: не обновляйте сайт без нужды!