Ограничение меню, невозможно добавить новые пункты

13 дек. 2012 г., 01:52:38
Просмотры: 17.7K
Голосов: 5

Я использую WordPress 3.4.2 на VPS сервере. Когда я впервые перенес все данные WP со старого сервера на этот VPS, меню работало нормально. Однако сейчас я не могу редактировать или добавлять пункты в меню, а некоторые элементы были удалены. Как бы я ни пытался добавить их снова, они не появляются. WordPress не выдает никаких ошибок. Когда я добавляю пункты и нажимаю кнопку "Сохранить меню", после долгой паузы (30-45 секунд) WP просто сообщает: "Меню Главное меню обновлено." Но новые пункты отсутствуют как на сайте, так и в настройках меню WP.

Изначально, когда я только перенес сайт на этот VPS, в меню было 9 пунктов верхнего уровня и около 90 подпунктов — всего около 100 элементов меню. Все отображалось корректно.

Сейчас я ограничен 88 пунктами меню. Я могу добавить новый пункт только удалив другой.

Я не уверен, когда именно возникла эта проблема, так как мы редко редактируем меню. Впервые это заметили вчера, когда некоторые пункты меню исчезли — возможно, это совпало с добавлением или редактированием пункта меню. Но мы используем этот новый VPS уже около месяца.

В другом обсуждении на форуме я нашел упоминание о suhosin, который может вызывать проблемы с ограничением меню в WP 3.x, но он не установлен в нашей PHP.

Я пробовал Safari и Firefox (OS X). В обоих браузерах одинаковая проблема.

2
Комментарии

Вы уверены, что "по какой-то причине" — это не новый плагин или какое-то обновление? Вы полностью проверили? А что насчет информации для отладки?

brasofilo brasofilo
13 дек. 2012 г. 04:34:41

Оказалось, что нужно было увеличить max_input_vars в php.ini. Мы обновляли плагины, но не устанавливали новые, и ни один из плагинов не связан напрямую с меню. Однако эти ссылки были полезны.

Michael Michael
13 дек. 2012 г. 17:53:22
Все ответы на вопрос 4
1

У меня была похожая проблема на сервере клиента, и решением в их случае стало увеличение настройки max_input_vars в файле php.ini.

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

13 дек. 2012 г. 02:51:19
Комментарии

Это был тот самый билет. Добавление max_input_vars = 2000 в мой php.ini и перезапуск сервера позволили мне добавить обрезанные пункты меню. (Странно, но иногда я получаю 404 ошибки при обновлении меню. То есть, обновление возвращает на ту же страницу WP /wp-admin/nav-menus.php, но показывает ошибку 404 вместо страницы редактирования меню. Однако, несмотря на это, меню обновляется корректно.)

Michael Michael
13 дек. 2012 г. 16:44:58
2

Та же самая проблема была затронута в недавней статье от WPBeginner.


Вам нужно отредактировать ваш файл php.ini. Поскольку вы используете VPS, у вас должен быть доступ к нему. В противном случае, вежливо попросите ваш хостинг сделать это за вас.

suhosin.post.max_vars = 5000
suhosin.request.max_vars = 5000

Также существует тикет в треке (#14134), где освещена эта проблема.

13 дек. 2012 г. 06:20:59
Комментарии

Как объяснено в исходном вопросе, мой сайт не использует suhosin. Однако есть связанная настройка PHP - max_input_vars, которую пришлось изменить. Смотрите комментарий от @Milo выше.

Michael Michael
13 дек. 2012 г. 17:55:10

Извините, я, должно быть, пропустил этот момент. Оставлю свой ответ здесь на случай, если случайный посетитель всё же использует suhosin.

shea shea
13 дек. 2012 г. 22:19:56
2

Я неоднократно сталкивался с этой проблемой. Попробуйте это быстрое решение:

  1. Откройте ваш любимый текстовый редактор (Блокнот, Dreamweaver и т.д.)
  2. Создайте файл с именем "php.ini"
  3. Вставьте следующий код: php_value max_input_vars 7000
  4. Сохраните файл
  5. Загрузите файл в корневую папку вашего сайта через FTP (Filezilla, Rush FTP и т.д.)

:) Вот и всё!

22 авг. 2013 г. 01:17:44
Комментарии

Можете, пожалуйста, определить, что такое "корневая папка"? Это папка \sitename\ на моем сайте?

p.a. p.a.
18 февр. 2014 г. 15:58:06

@p.a. вам следует поместить файл php.ini в папку wp-admin

Andrew Lazarus Andrew Lazarus
29 апр. 2015 г. 17:29:14
0

Некоторые решения:

1) Просто изменяйте меню не через админ-панель, а через "настройщик" (потому что он использует AJAX-запросы)

2) Попробуйте добавить php_value max_input_vars 7000 в файл .htaccess (или php.ini) [если вы используете shared hosting]

3) Попробуйте увеличить память, добавив в wp-config.php: define("WP_MEMORY_LIMIT", "128M");

19 окт. 2016 г. 00:04:27