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

Устранение тормозов WordPress: оптимизация админки, WPML и исправление ошибок PHP

Админка WordPress открывалась до 21 секунды, менеджеры испытывали проблемы с редактированием записей. Нашёл избыточную нагрузку WPML и Toolset, устранил ошибки совместимости PHP и исправил шаблон туров. Подробный разбор диагностики и решения.

тормозит админка вордпресс

Проблема: медленная работа административной панели WordPress на сайте туристической компании. Менеджеры испытывали трудности с редактированием туров: разделы админки открывались с большой задержкой, переходы по меню иногда не срабатывали, а сохранение изменений занимало слишком много времени.

Сайт использовал WPML для многоязычности, Toolset Types для пользовательских типов записей и полей, Advanced Custom Fields, Elementor, WooCommerce, All in One SEO и Permalink Manager Pro. Туристические направления были представлены отдельным типом записей со множеством характеристик и языковыми связями.

Задача: найти причины замедления, восстановить нормальную работу редактора и сохранить страницы туров, переводы, структуру URL и функциональность оплаты.

Диагностика производительности

Для поиска узких мест использовал Query Monitor, анализ PHP-предупреждений, SQL-запросов и журналов WPML. Проверял не только общую скорость админки, но и конкретный раздел с туристическими направлениями.

Что показали замеры

21,19 сек
Время генерации страницы
215,1 МБ
Потребление памяти
5 138
Количество SQL-запросов
2,44 сек
Общее время SQL
33 735
Количество сообщений PHP

Основная часть времени уходила не на выполнение SQL, а на работу PHP-кода, обработку пользовательских полей и переводов.

Избыточная нагрузка WPML и Toolset

WPML выполнял около 4 000 SQL-запросов при открытии списка туров, включая многократную обработку заданий перевода. Toolset и WordPress дополнительно загружали крупные массивы метаданных - более 34 000 строк. Административная страница запрашивала сотни записей одновременно, что увеличивало нагрузку.

Критическая ошибка: из 33 735 сообщений PHP 33 708 относились к одной ошибке - Warning: gzuncompress(): data error. Она возникала в компоненте WPML, отвечающем за распаковку данных переводов, и повторялась тысячи раз при формировании страницы.

Проблемы соединения с серверами обновлений

Важно: в журналах установщика обнаружились периодические ошибки обращения к серверам обновлений WPML и Toolset. Некоторые проверки подписки проходили успешно, поэтому речь шла не о подтверждённой полной блокировке, а о нестабильности отдельных соединений. Для диагностики была предусмотрена возможность отключения автоматических проверок обновлений OTGS без отключения самой многоязычности.

Выполненные работы

1Проверка компонентов WPML

Проверил назначение установленных модулей WPML. Часть дополнительных компонентов была временно отключена для оценки их влияния на скорость административной панели. Основное ядро WPML сохранялось, чтобы не нарушить языковые связи туров.

2Исправление Permalink Manager Pro

Устранил предупреждения PHP о динамических свойствах класса Permalink_Manager_Class. Добавил объявления свойств, отвечающих за постоянные ссылки, структуры URL, перенаправления и уведомления. Функциональность управления адресами сохранялась.

3Исправление T-Bank для WooCommerce

Аналогичные предупреждения обнаружились в классе WC_TBank. Добавил корректные объявления свойств, связанных с настройками платёжного модуля, фискализацией и системой налогообложения, не меняя логику обработки платежей.

4Исправление шаблона страниц туров

После временного отключения WPML String Translation страницы туров перестали выводить содержимое. В файле single-tour.php обнаружился PHP-вызов icl_translate() внутри HTML-комментария. Хотя такой комментарий скрывает содержимое в браузере, PHP внутри него продолжает выполняться. При отсутствии функции это могло приводить к фатальной ошибке.

Убрал ненужный вызов из закомментированного участка. После исправления страницы туров снова открывались, а шаблон перестал зависеть от этой функции в указанном месте. Структура страниц и расположение основных блоков были сохранены.

5Проверка после изменений

Проверялись страницы туристических направлений, административный интерфейс и PHP-предупреждения. Особое внимание уделялось совместимости изменений с многоязычностью, пользовательскими полями, постоянными ссылками и платёжным модулем.

Результат

После обновления компонентов и последовательных исправлений админка стала работать быстрее. Предупреждения совместимости Permalink Manager Pro и T-Bank были устранены, а страницы туров восстановили работоспособность.

Выполнено

  • Локализованы основные источники высокой нагрузки административной панели
  • Выявлено массовое повторение ошибок распаковки WPML
  • Обнаружены избыточные SQL-запросы при выводе списка туров
  • Проверены ошибки подключения к серверам обновлений WPML и Toolset
  • Исправлена совместимость двух плагинов с новой версией PHP
  • Устранена зависимость шаблона тура от вызова функции WPML String Translation в закомментированном коде
  • Восстановлено отображение страниц туров
Примечание: итоговые количественные замеры ускорения после всех изменений не проводились, поэтому точный процент прироста производительности не заявляется. По результатам проверки работа админки субъективно ускорилась, а страницы туров снова стали доступны.

Особенности проекта

Сложность заключалась в большом количестве взаимосвязанных компонентов: WPML отвечал за переводы, Toolset и ACF - за данные туров, Permalink Manager - за адреса, WooCommerce и T-Bank - за оплату. Отключение одного плагина могло затронуть другие части сайта. Поэтому работы проводились последовательно: замеры производительности, анализ журналов, локализация проблем, минимальные изменения кода и проверка результата.

Вывод

Этот кейс показывает, почему при торможении WordPress важно исследовать конкретные PHP-функции, SQL-запросы и зависимости плагинов, а не ограничиваться увеличением ресурсов хостинга или установкой кеширования. Последовательная диагностика через Query Monitor и логи позволяет найти корневую причину даже в проектах с десятками взаимосвязанных компонентов.

Есть похожая задача?

Пришлите ссылку на сайт и опишите желаемый результат.