Повествование ведется от лица Thord Daniel Hedengen. Его фотография используется в миниатюре для этой записи.
Ситуация, в которой я недавно оказался, вызвала в памяти все мои старые недовольства, связанные с шорткодами. Мы работали над масштабным клиентским проектом, включающим в себя целый набор привлекательных блогов, находящихся в сетевой установке. Первоначальное решение нельзя было назвать оптимальным, поэтому нам приходилось постоянно ломать разные интересные вещи. Под “интересными вещами” я здесь подразумеваю убийственно непроходимую глупость.
Именна эта глупость и вызывает во мне давнюю ненависть к шорткодам. Я ничего не имею против популярного шорткода gallery, который позволяет вставить изображения в причудливую галерею миниатюр. С ним все в порядке. Мое недовольство касается шорткодов, используемых в темах и плагинах.
Вы спросите, почему?
Давайте вместе подумаем над этим. Скажем, вы используете тему, в которой можно вставить привлекательную цитату с помощью простого шорткода. Вы счастливы, и все замечательно; правда, только до тех пор, пока вы не найдете новую тему и не переключитесь на нее. У вас есть постоянные изображения в хэдере, различные области виджетов и другие подобные вещи для настройки и запуска, после чего все снова встает на свои места и становится прекрасным, верно?
Неверно! Ваши шорткоды из предыдущей темы не будут выводить те необычные блоки с цитатами, которые были созданы ранее, потому что функция для их реализации отсутствует. Вместо этого вы получите вывод своего шорткода в текстовом виде.
Не слишком симпатично, не правда ли?
Как бы то ни было, этот конкретный шорткод можно было бы легко исправить. Достаточно скопировать фрагмент кода, отвечающий за отображение шорткода для цитат и поместить его в файл functions.php новой темы. Вуаля, симпатичные цитаты работают снова, пусть и в результате дополнительных действий. Вы могли бы прикрепить указанную возможность к плагину, чтобы свести копипастинг к нулю во время смены старой темы на новую. Таким образом, вы сможете реализовать любое обязательное поведение для вашей темы, и пока ваш плагин является активным и все работает, все будет – предположим это! – прекрасно!
Вернемся назад к нашему клиенту. Он использовал плагин для добавления фотографий к вложенной карте Google Map, которая прикрепляется к записям с помощью шорткода. Проблема заключалась в том, что плагин вел себя не так, как хотелось бы. Он нормально работал только после обновления версии WordPress до 3.2. Мы не хотели проводить обновление, поскольку оно затрагивает много разных вещей и не выглядит надежным. В конце концов, удаление плагина тоже не являлось выходом из ситуации, поскольку этот плагин использовался на сайте, и, следовательно, для него повсюду были расставлены шорткоды.
Я повторюсь: шорткоды были повсюду!
В данной ситуации мы решили сделать все с помощью плагина, но это стоило нам времени и денег. Если бы времени и денег было чуть побольше, мы бы реализовали наше собственное решение: подцепили бы к шорткодам, используемым в плагине, наши собственные наработки. Мы могли бы открыть базу данных и убрать из нее шорткод, но это, опять же, не лучший выход из ситуации.
Честно говоря, это действие вообще не должно было приводить к проблемам. Во-первых, я сомневаюсь, что такую функциональность как добавление Google Map, нужно производить с помощью плагина. Она не имеет высокой важности. Естественно, клиент думал, что добавление фотографий к картам (наряду с выбранным для этого способом) принесет исключительно удовольствие, однако теперь это стоило ему времени и денег. Если бы разработчики подумали над этим заранее, они бы ожидали такого развития событий и отыскали бы более портативное решение. Конечно, активность действий разработчиков напрямую зависит от того, какой способ оплаты выбрал клиент: чем больше денег, тем активнее разработчик вертится перед клиентом. Моветон, товарищи!
Что я хотел всем этим сказать? Будьте осторожны с шорткодами. Если вы полагаетесь на их функциональность, удостоверьтесь, что их можно легко портировать между темами и установками. Чем-то простым, таким как шорткоды для цитат, можно управлять вручную, но вот если проблема станет более запутанной, как в нашем примере с Google Map, вам будет очень сложно создать независимое решение. Время для шорткодов пока еще не подошло к концу, но для технологий завтрашнего дня они уже определенно не годятся. Они не такие удобные, как визуальный редактор и его TinyMCE кнопки; их использование может в будущем привести к тому, что вместо красивых действий и возможностей вы просто столкнетесь с голым кодом, который не будет работать. От выгоды и кажущейся простоты можно легко перейти к проблемам.
Просто примите обоснованное решение, что и как вы будете использовать, чтобы не винить себя впоследствии.
http://wpmu.org/why-i-loathe-shortcodes/