Рубрики
WordPress Настройка

Проблема с сохранением меню в WordPress 3.X

Как это выглядит: новые элементы меню не сохраняются. Возникает ограничение на максимальное кол-во элементов в меню (которого быть не должно). Цифра может быть разной, но как правило эта проблема затрагивает только большие меню с количеством элементов более 40.

Проблема может возникнуть если вы используете PHP 5.3.9 или более позднюю версию.

Также возможно ее появление при использовании патча безопасности для PHP – Suhosin.

Суть проблемы.

Начиная c PHP 5.3.9 в php.ini была добавлена новая директива:

max_input_vars

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

В моем случае значение по умолчанию было равно 1000. И этого было мало (интересная структура у менюшек в WordPress). Увеличил значение до 2000 – меню стало сохраняться корректно.

Если на сервере используется Suhosin, необходимо увеличить значения двух директив:

suhosin.post.max_vars и suhosin.request.max_vars

2000 должно хватить и здесь.

13 ответов к “Проблема с сохранением меню в WordPress 3.X”

Спасибо огромное!!!
Тоже столкнулся с данной проблемой!
Вот мое решение:
Заходим в управление модулями на хостинге, и в настройки PHP, там будет “Максимальное количество входящих параметров в запросе”
Этот параметр показывает, сколько входных переменных может быть принято в одном запросе. Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий.
Меняем вместо по умолчанию, на 3000.
И вуаля!!!

Я когда пробую в файл .htaccess добавить php_value max_input_vars 2000
Слетает весь сайт.
:(

Весь код этой странички:

suPHP_ConfigPath /home/efaberli/php.ini

# BEGIN WordPress

# END WordPress

Не всегда можно изменить параметры php через htaccess!
Скорее всего у вас PHP установлен в режиме CGI – поэтому и вылетает ошибка.
Выход – поменять настройки непосредственно в php.ini
Или пропишите прямо в wp-config.php:

ini_set('max_input_vars', 2000);

В моем случае помогло следующее: в файле .htaccess, лежащий в корне Вашего сайта, следующую строку:
php_value max_input_vars 2000

Спасибо! за хорошо изложенный и проиндексированый поисковиками ответ.

Большое спасибо за наводку. Обратился в саппорт хостинга, и после увеличения вышеназванных переменных проблема исчезла.

Нужен доступ к php.ini

Если проблема на хостинге, то лучше обратиться в суппорт.
Если на домашнем компе, то могу растолковать…

Буду признателен если растолкуете. а то я в этом деле новичок, за ранее благодарю

Задание на ночь: найти php.ini. Скорее всего он в папке установки php.

Если в ручную найти не получается, установите плагин Q2W3 PHPinfo.
Откройте страницу PHPinfo.
Найдите строку Loaded Configuration File (9-я сверху) – здесь указан путь к вашему php.ini. Вот там и нужно произвести изменения, описанные в статье. Как сохраните файл – перезагрузите веб-сервер.

Спасибо! Все верно только доступ к php.ini необязателен можно
в .htaccess добавить php_value max_input_vars 2000

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *