Неожиданная ошибка от WordPress меню
Столкнулся с интересной проблемой. Сайт падал с 504 ошибкой (тайм-аут) при сохранении меню WordPress. Сервер очень мощный. Начал разбираться.
Как оказалось, меню было слишком большим для WP. Оно на 50-60 пунктов. С технической точки зрения, когда вы сохраняете меню в WordPress, то каждый пункт отправляется как набор полей. Там всякие заголовки, ссылки, порядок, родительские элементы, CSS-классы...
В итоге у нас получается ОГРОМНЫЙ POST-запрос. И сервер просто не успевает его обработать до конца => сервер падает.
Исправляется это путем увеличения max_input_vars для PHP. Надо ставить 10 000 вместо дефолтных 1 000, а где-то и 20 000 может не хватить.
Также надо не забыть про max_execution_time и max_input_time. Им поставить 300 секунд. А также memory_limit 512M.
Если всё это не помогло, то надо копаться в Nginx/Apache в зависимости от стека.
Однако это всё скорее костыль, чем решение. Для меня загадка, как так разрабы WP не предусмотрели такую оптимизацию... Самое лучшее решение в случае мегаменю — отказаться от WordPress меню и накодить его с помощью того же ACF. Либо вариант более элегантный, оставить только верхние уровни, а нижние выводить динамически через PHP.
Если у вас небольшое меню, то беспокоиться не о чем.
OlegTix | #вебразработка #wordpress
Post #398
385
