Vladimir Gromadin aka kryzander

Владимир Громадинvladimir@gromadin.com

the_excerpt() == the_content() ????? // HardSoftWeb // 18.02.2013

Предисловие

«На некотором сайте, в некотором хостинге» для вывода основной части текста (как и вообще в WordPress’е) используется две функции (the_excerpt и the_content), которые делают почти одно и то же: берут текст из базы данных, обрабатывают его (например, добавляют или убирают абзацные отступы и некоторые другие вещи) и выводят на экран с одним отличием. Excerpt обрезает текст (для сокращенного вывода, например, в архивах и на главной странице — краткие версии новостей делаются именно ей), а content выводит его полностью, хотя из него тоже можно запросить краткую версию, пусть и немного по другому алгоритму. Проблема: обе эти функции последние дни на конкретном сайте выводили одно и то же. То есть там, где должен быть полный текст, стала показываться сокращенная версия. В ней, соответственно, вид был специфический: в сокращенной версии здесь вырезается много разных тэгов + все форматирование. Это я понял сразу, вопрос был только «почему???»

Логика поиска проблемы

Функции не могут быть неверными, т.е. сам код не виноват точно. Во-первых, это стандартные функции, которые оттестированы уже десятилетие как, во-вторых, код сайта ведь не менялся в этой части с момента создания году эдак в 2008-м… А работать перестал. Проверил обновлениями, сверкой файлов, где находятся сами функции и т.п. Никаких заметных ошибок нигде не фиксировалось. Вывод: надо искать то, что изменилось на сайте. Опрос сопричастных результата не дал, никто ничего нигде не обновлял и вообще никто сайт не трогал (я тем более)).

Найдено изменение

Нашел изменение в панели управления хостингом. После запуска нового сайта на этом же хостинге был включен оптимизатор PHP со спецнастройками для Битрикса. Новому сайту он нужен, остальным сайтам — нет, но хостинг-то один :) Оптимизатор занимается в том числе кэшированием работы функций, и, видимо, для него the_excerpt и the_content из-за технически идентичного устройства показались одинаковыми, и он, ничтоже сумняшеся, упростил и ускорил их работу за счет одинакового вывода. В результате разные функции выдавали один и тот же результат (в частности, в полном тексте выкидывали абзацы и ссылки, как это делалось в краткой версии), причем не всегда понятно, когда какой: вопросы к оптимизатору.

Решение

Пришлось переписать обертку для the_content, вообще убрав эту функцию с сайта, реализовав вывод информации не простым, а обходным способом, через get_the_content + обработку фильтрами «на месте»; такой способ даже для оптимизатора выглядит совсем непохожим на the_excerpt. В результате измененный код вроде бы работает.

Вывод

Ищите женщину искать проблему полезно даже в побочном эффекте настройки хостинга, предсказать которую было сложно; на сайте Зенона, в свою очередь, никакой документации по этому поводу нет. Да и вообще баг очень редкий: вряд ли кто поверх оптимизатора для Битрикса будет запускать WordPress — это не имеет смысла :) (так же, как и оптимизатор для Вордпресса поверх Битрикса вряд ли привел к чему-нибудь хорошему). На этом хостинге был запущен еще один сайт, но он уже совсем древний, и его простые функции спутать уж очень сложно :)

Click on a tab to select how you'd like to leave your comment

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

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

Календарь
Сентябрь 2018
ПнВтСрЧтПтСбВс
« Авг  
 12
3456789
10111213141516
17181920212223
24252627282930