• доступно о веб-разработке
14.01.2014 Wordpress, Движки

Если в WordPress пропадает содержимое поста

Друзья, если получится, то сайт будет работать в прежнем режиме. Кстати, через неделю начинаются бесплатные курсы по веб-разработке, которые я буду вести на базе Санкт-Петербуржского Дома Молодёжи. Называется проект «Веб от А до Я». Каждая лекция будет записана на видео и выложена в Интернет. Думаю, что кому-то будет интересно.

Теперь о проблеме с WordPress. Многие могли с ней сталкиваться или в столкнутся в будущем.

Суть: если постить большой по количеству знаков текст, то при отображении поста на сайте само содержимое поста исчезает.

Причина проблемы: в WordPress вывод содержимого поста в шаблон осуществляется при помощи функции the_content. По пути содержимое поста обрабатывается при помощи фильтров, которые вешаются поверх функцией add_filter(‘content’,’тут_имя_функции’).

Так вот, один из фильтров просто пожирает всю память из-за регулярных выражений. В результате, мы остаёмся с носом на выходе, то есть с исчезнувшим непойми куда содержимым поста.

Выход:

Я много раз сталкивался с этой проблемой, но всё время её как-то обходил. То пытался увеличить в Базе Данных MySQL размер поля содержимого, сменив его тип с TEXT на LONGTEXT. То делил пост на части и включал его при помощи плагина Mindvalley Include Post Content.

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

Сначала начал дебажить в коде прямо, пытаясь выловить фильтр, который убивает контент.

Это ни к чему не привело.

В итоге на помощь пришёл старик Гугл, который и дал правильный ответ.

Всё дело в памяти и регулярных выражениях. Кто-то так активно парсит содержимое, что съедает всю оперативку, что выделена на движок по-умолчанию. В итоге клиент остаётся с пустым постом.

Выход простой, добавить в wp-config.php следующие строки:

define('WP_MEMORY_LIMIT', '64M'); // Можно и 128 поставить
ini_set('pcre.recursion_limit', 20000000);
ini_set('pcre.backtrack_limit', 1000000);

 

Поделиться

Комментарии Правила дискуссии

Читайте ранее:
Что такое VPS и с чем его едят – инфографика о виртуальных серверах

Крайне полезная инфографика была на днях опубликована на Хабре.

Закрыть