WordPress не сохраняет настройки: причины и способы исправления | Мастерская — статьи по WordPress и серверам | de-bor.ru

Частный web-мастер Денис Борисов
WordPress-сайтов

WordPress не сохраняет настройки: причины и способы исправления

WordPress: ошибки и фиксы · 2026-08-07 · 6 мин чтения
Вы сохраняете настройки WordPress, страница перезагружается, показывается зелёное «Настройки сохранены» — а значение не поменялось. Либо меняется, но через минуту возвращается обратно. WordPress не показывает ошибку, и непонятно, с чего начать. Чаще всего виноваты лимиты PHP, ошибки обработки POST-запросов, веб-фаерволл, плагины и кэш. Разберу причины по шагам — от частых к редким.

Почему настройки не сохраняются

Сохранение в админке — это короткая цепочка: браузер отправляет POST-запрос в админку WordPress, ядро проверяет nonce и права пользователя, затем вызывает update_option() или обработчик конкретного плагина, который пишет значение в таблицу wp_options. Ломается любое из этих звеньев.

Частые причины, в порядке вероятности:

  • max_input_vars. PHP по умолчанию принимает максимум 1000 переменных в одном POST-запросе. На больших страницах настроек запрос обрезается — молча, без ошибки.
  • Ошибки AJAX/REST при сохранении. Блокируется неверный запрос: 403 — nonce или права, 500 — фатальная ошибка PHP, 413 — превышен размер тела. Браузер показывает «сохранено», а данные не доезжают.
  • Web Application Firewall и ModSecurity. На shared-хостингах фаервол режет большие формы (WooCommerce, Elementor, ACF) без явной ошибки WordPress.
  • Кэш. Некорректно работающий объектный кэш (Redis, Memcached) отдаёт старые значения из памяти. Full-page кэш влияет на фронтенд и редко мешает сохранять в админке.
  • Плагин или тема перехватывает сохранение. cron-задача, синхронизация с внешним сервисом или security-плагин откатывают изменённое.
  • Права на файлы. Некоторые инструменты пишут настройки в wp-config.php или .htaccess — без прав на запись ничего не меняется.
Начните с Network и лимитов запроса. Эти причины встречаются часто и проверяются за пару минут без риска для данных. Ошибка 403 или 500 сразу укажет направление.

Как исправить

Шаг 1. Проверьте ошибки AJAX/REST в консоли браузера

Откройте страницу настроек и нажмите «Сохранить», не закрывая DevTools (F12 → вкладка Network). Посмотрите статус POST-запросов:

  • 403 — неверный или просроченный nonce. Помогает: обновить страницу (сгенерировать свежий nonce), отключить security-плагины, проверить кэш WP Rocket и других оптимизаторов, которые генерируют страницу с чужим nonce.
  • 401 — проблема с авторизацией: не передаются cookies, истекла авторизация или есть конфликт домена/HTTPS.
  • 500 — фатальная ошибка PHP. Посмотрите журнал ошибок хостинга: файл обычно public_html/wp-content/debug.log или лог в панели.
  • 413 — превышен лимит тела запроса на сервере (например, client_max_body_size в Nginx, LimitRequestBody в Apache или post_max_size в PHP).

Шаг 2. Поднимите max_input_vars

Если теряются поля в конце большой формы — это лимит переменных. Порог 1000 исчерпывается на страницах с большим набором полей: SEO-плагины (Yoast, Rank Math), конструкторы страниц (Elementor), кастомные поля (ACF), страницы тем и WooCommerce с большим числом атрибутов.

# Проверка текущего лимита
php -r 'echo ini_get("max_input_vars");'

Увеличьте в php.ini или в панели хостинга:

max_input_vars = 5000

После изменения перезапустите PHP-FPM и повторите сохранение.

Отдельно проверьте лимиты размера POST на уровне сервера: post_max_size в PHP, client_max_body_size в Nginx и LimitRequestBody в Apache. Если какой-то из них меньше объёма формы — запрос режется до обработки WordPress. Это не путать с max_input_vars: он ограничивает количество переменных, а не размер.

Шаг 3. Проверьте WAF и ModSecurity

Web Application Firewall (Cloudflare, панель хостинга, cPanel ModSecurity) может блокировать POST-запросы с большими данными — часто без видимой ошибки в WordPress. Признак: сохранение проходит на локальной копии сайта, а на проде — нет, а в Network виден 403 от фаервола.

Что сделать: временно отключите WAF на страницу настроек или добавьте сайт в исключение, проверьте логи WAF на время блокировки. На время диагностики достаточно переключить правила на observe-режим у хоста.

Шаг 4. Исключите кэш

Объектный кэш (Redis, Memcached) может хранить значения опций в памяти — не все обязательно кэшируются, WordPress сам решает, что класть в object cache. При нормальной настройке кэш инвалидируется после update_option(). Проблема возникает при неправильном drop-in object-cache.php, нескольких серверах без общего кэша или повреждённых данных.

# WP-CLI: сброс объектного кэша
wp cache flush

Full-page кэш редко мешает сохранить настройки, но может показывать старый фронтенд после изменения. Для проверки фронтенда после изменения настроек используйте окно инкогнито: оно исключает сохранённые cookies и локальный кэш браузера, хотя HTTP-кэш на стороне сервера может действовать. Для самой страницы настроек важнее проверить значение через базу или WP-CLI.

Шаг 5. Проверьте права на файлы

Сам WordPress хранит настройки в wp_options, но в wp-config.php и .htaccess могут писать отдельные инструменты: плагины кэша (например, через константу WP_CACHE), хостинговые панели, мастера установки, конфигураторы Redis и другие инструменты. Если файл неперезаписываем — правки не проходят. Для стандартных настроек WordPress права на wp-config.php обычно не имеют значения, так как они хранятся в базе.

# Проверка владельца и прав
ls -la wp-config.php

На shared-хостинге чаще всего встречается 644. Для WordPress хостинговых панелей это норма. Более строгий вариант безопасности — 600 или 640, если сервер позволяет. Не ставьте 777 ради фикса: это дыра в безопасности.

Шаг 6. Проверьте таблицу wp_options

Если все шаги пройдены, а значения не пишутся — проверьте таблицу и автозагрузку опций.

# WP-CLI: проверка таблиц
wp db check
# ремонт при ошибках (эквивалент WP_ALLOW_REPAIR в браузерном режиме)
wp db repair

wp db repair через WP-CLI доступен без конфигурации. Для браузерного ремонта (/wp-admin/maint/repair.php) в wp-config.php нужна константа define('WP_ALLOW_REPAIR', true);.

Редкий случай — автозагрузка опций. Большой объём autoload-данных (десятки тысяч строк autoload = yes) в редких случаях может привести к ошибкам памяти или таймаутам во время загрузки страниц настроек — не к прямому отказу сохранения.

Проверка результата

После каждого шага повторяйте тест: измените любую тестовую настройку (например, название сайта), сохраните и проверьте результат через базу данных или WP-CLI:

# Значение из wp_options напрямую
wp option get blogname

Значение в БД новое, а на странице старое — кэш. Значение в БД старое — проблема с записью, двигайтесь дальше по шагам.

Когда эти способы не сработают

  • Конфликт плагинов. Один из плагинов перехватывает update_option или откатывает значения. Проверка: отключите все плагины, сохраните, включайте по одному, пока не найдёте виновника.
  • Тема блокирует сохранение. Бывает с конструкторами. Проверьте на актуальной стандартной теме WordPress (например, Twenty Twenty-Four): сохранилось — дело в вашей теме.
  • Кастомный код. Хуки pre_update_option и sanitize_option могут переписывать значения. Без чтения кода не обойтись.
  • Синхронизация с внешним сервисом. Плагин получает настройки из CRM, агрегатора или конфигуратора и затирает локальные значения. Обычно это видно в логах плагина.
  • Ограничения хостинга. Некоторые провайдеры блокируют POST-запросы правилами безопасности или лимитами PHP/Apache/Nginx. Симптом: проблема проявляется только на конкретном сервере — локальная копия работает, прод не сохраняет. Прямая дорога — лог ошибок хостинга или тикет поддержке.
Диагностика за 10 минут. Откройте консоль (F12), Network, повторите сохранение и смотрите статус запросов к admin-ajax.php. Статус 403 — nonce, 500 — фатальная ошибка PHP, 413 — лимиты сервера. Это сужает поиск мгновенно.

Частые вопросы

Почему одни настройки сохраняются, а другие нет?
Чаще это max_input_vars: теряются поля в конце формы, когда их больше лимита. Поднимите до 5000 и повторите. Вторая причина — большая часть опций пишется в wp_options, а отдельные поля могут обрабатываться плагином, который ломает форму.
Настройки сохраняются, но через минуту возвращаются старые значения?
Редко это кэш. Чаще плагин перехватывает update_option, cron-задача или синхронизация с внешним сервисом возвращают предыдущее значение, либо security-плагин откатывает изменения. Включите логирование wp_options или отключите плагины по одному.
Кнопка «Сохранить» просто ничего не делает?
Откройте вкладку Network — там видно ошибку AJAX. 403 — nonce устарел, обновите страницу или очистите кэш плагина оптимизации. 500 — фатальная ошибка PHP, смотрите debug.log. 413 — лимит тела запроса.
Проверка в инкогнито — обязательно?
Не обязательно, но полезно: инкогнито исключает сохранённые cookies и локальный браузерный кэш и показывает, что реально отдаёт сервер. HTTP-кэш на сервере при этом продолжит работать — чистите и его.
Всё перепробовал, ничего не помогло. Что дальше?
Отключите все плагины и проверьте на стандартной теме. Если значения стали сохраняться — включайте плагины по одному. Не помогло — смотрите журнал ошибок хостинга и таблицу на автозагрузку больших объёмов данных.

Не получается разобраться с настройками?

Найду причину и починю: лимиты PHP, WAF, AJAX-ошибки, кэш, права на файлы. Обычно хватает часа работы.

Написать в Написать в

Сопровождение и поддержка сайта

Сопровождение и поддержка сайта

Исправлю ошибки WordPress, восстановлю сайт.

от 5.400 ₽/мес

Подробнее
Техническая оптимизация

Техническая оптимизация

Ускорю сайт, настрою кэш, устраню узкие места.

7.200

Подробнее

Разрабатываю WordPress-сайты

Лендинги, многостраничные сайты, интернет-магазины на WooCommerce — всё на WordPress с удобной панелью управления.

Сайт под ключ: регистрация домена и хостинга, установка WordPress, настройка шаблона и модулей.

Поддерживаю WordPress-сайты

Обновление плагинов и тем, резервное копирование, мониторинг работоспособности — сайт работает без сбоев.

Оперативное исправление ошибок, создание новых разделов, доработка функционала и наполнение контентом.

Продвигаю WordPress-сайты

SEO-оптимизация, настройка Яндекс Метрики и Вебмастера, подключение Google Search Console.

Оптимизация позволяет «поднять» сайт в поисковых выдачах, увеличить целевой трафик и привлечь новых клиентов.

Чистка от вирусов WordPress

Если сайт взломали, появился подозрительный код или спам-рассылка — найду и удалю вредоносный код, закрою уязвимости и настрою защиту от повторного заражения.

После чистки проверю все файлы и плагины, обновлю WordPress до актуальной версии и настрою автоматическое резервное копирование.

Диагностика сайта

Проверю ваш сайт по ключевым параметрам и подготовлю отчёт с рекомендациями:

  • Скорость загрузки и производительность;
  • Безопасность и уязвимости;
  • SEO-состояние и индексация;
  • Мобильная адаптация;
  • Технические ошибки и код.
Заказать диагностику
Михайлова Анастасия

Денис МАСТЕР своего дела. Вёл целый проект, работали с ним на протяжении 4х месяцев. Отзывчивый, понимающий с полуслова специалист. Стоимость услуг радует, а качество работы приводит в восторг.

Денис спасибо Вам от лица нашей строительной компании и от всего нашего персонала.

Михайлова Анастасия

Игорь Караваев

Обратился к Денису для восстановления сайта на WordPress после сбоя. Сделал, как и обещал, за сутки — сайт снова работает без ошибок. Профессионал своего дела, доходчиво объясняет, вежлив и тактичен. Однозначно рекомендую!

Игорь Караваев

Яна Веркулич

Денис, спасибо огромное за работу)) Очень тепло вспоминаю Вас и все что Вы сделали для моей работы и моего сайта.

Денис Профессионал с большой буквы, решает любые вопросы, отличный специалист))

Рекомендую к сотрудничеству, еще раз спасибо)

Яна Веркулич

Бюро Переводов

Денис оперативно и грамотно справляется со всеми поставленными задачами. Внес правки на англоязычную и русскоязычную версии сайта, учел все пожелания. Будем обращаться еще!

Бюро Переводов

Анастасия Виричева

Денис мастер своего дела, рекомендую его как специалиста.
Понимает, что нужно сделать и справляется с поставленной задачей в короткое время.

Делал сайт для салона красоты, просто и функционально.

Анастасия Виричева

Владимир

Очень много времени мучались с сайтом на OpenCart. «Специалисты» не могли нормально разобраться в проблеме, возникавшей при выполнении элементарной задачи.

Денис сделал это в два счета, также расписал подробно, в чем была проблема и как она решена. На 200% доволен. Даже не хочется его рекомендовать, потому что будет постоянно занят))

Владимир

Ксения Петровская

Денис оперативно ответил и помог решить проблему, которую я даже описать нормально не могла)) Мы сами что-то накрутили с корпоративной почтой — письма то уходили, то нет, в общем всё сломали.

Денис всё починил, теперь у нас нормальная почта, домен работает, письма приходят и уходят. Цена как заявлена — оплатили по факту проверки. Спасибо большое!

Ксения Петровская

Александр Кривуля

Заказал у Дениса доработать сайт на WordPress. При этом трудно себе представлял, что сам хочу. Благодаря профессионализму Дениса и его умению всё грамотно и просто объяснять, предлагать разные варианты решений — цель была достигнута.

Умение общаться доходчиво и терпеливо с клиентами — огромный плюс. Я очень доволен. Однозначно рекомендую!

Александр Кривуля

Кондитер мания

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

Кондитер мания

Бесплатная настройка хостинга и домена

Регистрация хостинга на 1 месяц и домена .ru/.рф на 1 год входит в стоимость разработки сайта.

Подробнее