Критическая ошибка WordPress — как исправить
Почему возникает критическая ошибка WordPress
Причин может быть много, но почти все сводятся к одному: PHP-код упал с фатальной ошибкой, и WordPress не смог обработать запрос. Вот три самые частые причины.
Несовместимый плагин или тема. После обновления WordPress, PHP или самого плагина код начинает использовать устаревшие функции. Типичный сценарий: обновили PHP с 7.4 до 8.2 — и половина плагинов перестала работать. Особенно этим грешат старые темы из репозитория, которые не обновлялись годами.
Закончилась память PHP (memory limit). WordPress и плагины потребляют память, и если лимит слишком мал (обычно 32–64 MB на дешёвых хостингах), сайт валится с «Fatal Error: Allowed memory size exhausted». На Beget лимит по умолчанию — 64 MB, чего часто не хватает для сайта с Elementor или WooCommerce. Чем больше плагинов и чем тяжелее тема — тем выше потребление.
Ошибка в functions.php или пользовательском коде. Даже одна пропущенная точка с запятой в functions.php дочерней темы кладёт весь сайт. Это самое обидное: всё работало, вы добавили три строчки кода — и сайт лёг. Особенно часто это случается при копировании кода из непроверенных источников.
Как исправить критическую ошибку WordPress — пошагово
Шаг 1. Включите WP_DEBUG через wp-config.php
WP_DEBUG — главный инструмент диагностики. Он покажет реальную ошибку вместо белого экрана. Откройте wp-config.php через файловый менеджер хостинга или FTP и найдите строку:
define('WP_DEBUG', false);
Замените на этот блок:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
После этого обновите страницу — ошибка запишется в файл /wp-content/debug.log. Откройте его — там будет понятная строка вроде PHP Fatal Error: Call to undefined function ... in /wp-content/themes/.... Путь к файлу сразу укажет на проблемный плагин, тему или конкретный файл с ошибкой.
Если админка тоже не открывается — подключитесь по FTP, откройте wp-config.php и добавьте эти строки перед /* That's all, stop editing! */. Не удаляйте ничего из существующего файла — только добавьте блок перед последней строкой.
Шаг 2. Отключите проблемный плагин
Из debug.log вы узнали, какой плагин вызывает ошибку. Теперь его нужно отключить. Через FTP или файловый менеджер хостинга переименуйте папку плагина:
/wp-content/plugins/<название-плагина> → /wp-content/plugins/<название-плагина>.bak
Если админка всё ещё открывается — просто отключите плагин через меню «Плагины» в админке. Обновите страницу сайта — критическая ошибка WordPress исчезнет.
Если debug.log пустой или вы не знаете, какой плагин виноват, — переименуйте всю папку /wp-content/plugins/ в /wp-content/plugins.bak/. WordPress отключит все плагины разом. Если сайт заработал — включайте плагины по одному, возвращая им исходные имена папок, пока не найдёте виновника.
Шаг 3. Временно переключите тему
Если отключение плагинов не помогло — проблема в теме. Через FTP переименуйте папку текущей темы:
/wp-content/themes/ваша-тема/ → /wp-content/themes/ваша-тема.bak/
WordPress автоматически переключится на стандартную тему (Twenty Twenty-Five или аналогичную). Сайт снова откроется. После этого можно спокойно разбираться с кодом темы или обратиться к разработчику.
Шаг 4. Увеличьте лимит памяти PHP
Если в debug.log написано Allowed memory size — не хватает памяти. Добавьте в wp-config.php перед /* That's all */:
define('WP_MEMORY_LIMIT', '256M');
На некоторых хостингах — например, Timeweb и Reg.ru — wp-config недостаточно, нужно также увеличить лимит через панель управления: в PHP-настройках выставить memory_limit = 256M. На Beget это делается через раздел «PHP» в управлении сайтом. После изменения лимита перезапустите PHP-процесс (обычно это кнопка «Перезапустить» в панели хостинга).
Если у вас стоит WordPress Multisite, максимальный лимит задаётся отдельно — через WP_MAX_MEMORY_LIMIT. Добавьте его следом:
define('WP_MAX_MEMORY_LIMIT', '512M');
Проверка результата
После каждого шага обновляйте страницу. Если критическая ошибка WordPress исчезла и сайт открывается нормально — вы нашли и устранили причину. Сделайте две вещи:
- Отключите WP_DEBUG на продакшене. Верните
define('WP_DEBUG', false);обратно. Оставлять дебаг-режим включённым на рабочем сайте опасно — логи будут расти, а сообщения об ошибках могут показать посетителям пути к файлам на сервере. - Найдите постоянное решение. Если проблема была в плагине — найдите альтернативу или обновите его до совместимой версии. Если в теме — обратитесь к разработчику или перепишите проблемный код.
После исправления удалите /wp-content/debug.log — он мог вырасти до десятков мегабайт за время диагностики.
Когда способ не сработает
Ошибка после обновления ядра WordPress. Если сайт лёг сразу после обновления — откатите WordPress до предыдущей версии через FTP. Скачайте предыдущую версию с ru.wordpress.org, распакуйте и замените папки wp-admin и wp-includes на сервере. Не трогайте wp-content — там ваши файлы, темы, плагины и загрузки.
Критическая ошибка на всех страницах, включая wp-login.php. Проверьте права доступа к файлам. Сбросьте права: всем папкам — 755, всем файлам — 644. На хостингах вроде Reg.ru это можно сделать через файловый менеджер одной кнопкой (раздел «Права доступа»). Если и это не помогает — проверьте .htaccess.
Сайт падает только при определённом действии. Например, при отправке формы или добавлении товара в корзину. Оставьте WP_DEBUG включённым и повторите действие. Ошибка появится в debug.log — скорее всего, это конкретный плагин или обработчик AJAX. Отключайте подозрительные плагины по одному и проверяйте, исчезла ли проблема.
После всех шагов — всё равно белый экран. Проверьте .htaccess в корне сайта — возможно, он повреждён после обновлений или миграции. Переименуйте .htaccess в .htaccess.bak, зайдите в админку → «Настройки» → «Постоянные ссылки» и нажмите «Сохранить изменения». WordPress создаст новый .htaccess с правильными правилами.
Если ничего из этого не помогло — проблема может быть на стороне хостинга. Откройте тикет в поддержку Beget, Timeweb или Reg.ru и попросите проверить логи PHP-FPM. Иногда хостинг блокирует сайт из-за превышения CPU.
Частые вопросы
mysql_*, each(), create_function(). Если ваш плагин использует такой код — после обновления PHP он упадёт. Решение: обновить плагин или заменить на современный аналог./wp-content/plugins/ в /wp-content/plugins.bak/ и проверьте, открывается ли сайт.Не можете исправить критическую ошибку?
Бывает, что самодиагностика заходит в тупик. Я подключаюсь к сайту, нахожу причину за 10–15 минут и исправляю. Берусь за WordPress любой сложности.