Неозвучена проблема шорткодів

Автор:

у

The-Unspoken-Problem-of-Shortcodes

Шорткоди є однією з вершин WordPress. Шорткоди — це міст між розробниками та авторами сайтів, що дозволяє людям розміщувати складні елементи вмісту практично будь-де за їхнім бажанням. Автори плагінів люблять шорткоди, оскільки це дає більше гнучкості щодо того, як і де їхні користувачі відображають свій контент.

Якщо ви не знаєте, що таке шорткоди та як вони виглядають, це такий архаїчний схожий на код текст, узятий у квадратні дужки. Виглядають вони приблизно так:

Конкретно цей називається шорткодом embed і вбудований у WordPress за замовчуванням. Він вбудовує відео за URL-адресою у ваш контент. Просто скопіюйте та вставте наведений вище шорткод на свій сайт, якщо хочете його випробувати.

За лаштунками відбувається те, що коли WordPress зустрічає шорткод у вашому контенті, він обробляється та перетворюється на щось інше. У нашому випадку вище, щоразу, коли виявляється

шорткод, WordPress бере URL-адресу з шорткоду та перевіряє її за списком провайдерів контенту, які в нього є. Коли він знаходить потрібного, він отримує відповідний код вбудовування iframe і відображає його замість шорткоду.

Тож у чому тут проблема? Звучить досить просто: ви просто вводите короткий текст у дужках і готово.

І тут з’являється Shortcode API…

Безліч шорткодів

Shortcode API відкриває можливість створення шорткодів для розробників. Завдяки цьому розробники можуть додавати власні шорткоди у свої плагіни.

Це чудово, адже тепер за допомогою лише короткого кодоподібного фрагмента (звідси й назва «шорткод») як початківці, так і досвідчені користувачі можуть розміщувати практично будь-який тип контенту будь-де.

За замовчуванням у WordPress є лише кілька шорткодів. Їх легко ввести з пам’яті, оскільки їх зовсім небагато. Але якщо встановити кілька плагінів, кількість шорткодів швидко зростає до десятка чи більше, а в деяких випадках — і понад сотню. Кожен шорткод має власний набір атрибутів та інструкції щодо використання. Кожен плагін, найімовірніше, має певну документацію про те, як працюють усі його шорткоди, та список усіх доступних параметрів для кожного з них. Але треба збожеволіти, щоб спробувати запам’ятати всі шорткоди та їхні атрибути.

Проблема полягає в тому, що немає централізованого місця, де можна було б дізнатися про всі шорткоди, доступні на вашому сайті, та про те, як ними користуватися.

Дехто намагається вирішити цю проблему

Деякі плагіни намагаються вирішити цю проблему, представляючи всі свої власні шорткоди у зручному спадному списку. Клік по одному з них виводить шорткод разом із усіма можливими для нього атрибутами. Більше немає потреби запам’ятовувати їх, і це добре.

Screen-Shot-2016-06-22-at-11.27.09-AM

Деякі йдуть далі та додають спливаючу форму налаштувань із прапорцями та інструментами вибору кольору для заповнення атрибутів шорткоду.

Screen-Shot-2016-06-22-at-11.28.54-AM

Це рішення нібито працює. Проте кожен плагін перераховує лише власні шорткоди. Тож якщо кожен плагін створює свою форму вибору шорткодів, ви неминуче зіткнетеся з ситуацією, коли на вашому екрані з’явиться кілька таких інструментів вибору (зі мною таке вже траплялося).

Screen-Shot-2016-06-22-at-11.22.41-AM

Іншими словами, кожен плагін робить усе по-своєму та впроваджує власне рішення для своїх шорткодів. Деякі плагіни додають нову кнопку поруч із кнопкою «Додати медіафайл», або нову кнопку всередині TinyMCE.

І тепер ви можете подумати: «Чому б просто не зібрати шорткоди інших плагінів і також не включити їх у свій спадний список / засіб вибору шорткодів?» Що ж, саме так я і подумав. Але простіше сказати, ніж зробити. Я поясню чому трохи пізніше, але спочатку давайте подивимося, як виглядало б ідеальне рішення.

Ідеальне рішення

Ідеальним планом було б створити плагін, який збирає всі доступні шорткоди на вашому сайті, показує вам список, а також допомагає заповнити всі атрибути. І щоразу, коли ви встановлюєте новий плагін, усі ці нововведені шорткоди також представлялися б вам.

Уявіть собі єдине центральне місце, де всі ваші шорткоди зібрані для легкого доступу. Для кожного шорткоду було б описано, що він робить і до якого плагіна належить. А для кожного доступного атрибута була б мітка, зручний спосіб вибору значення та опис. Вам пропонувалися б спадні списки, палітри кольорів, радіокнопки, перемикачі тощо.

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

Підводний камінь

На жаль, зараз зробити щось подібне доволі складно. Не існує надійного способу дізнатися всі деталі шорткоду. Можна отримати список усіх шорткодів, але лише їхні фактичні теги/назви; неможливо отримати додаткову інформацію про них, як-от список атрибутів, їхнє призначення та типи (наприклад, рядок, колір чи число). Також неможливо отримати бодай подобу опису для кожного атрибута.

Звернення до розробників: так, для функції shortcode_atts нещодавно з’явився третій аргумент, але він не є обов’язковим. Тож доки кожен розробник плагінів у світі не почне його використовувати, у нас усе одно не буде надійного способу визначити всі атрибути шорткоду.

Shortcode API не надає жодних засобів для додавання описів шорткодів, приведення типів атрибутів чи описів атрибутів. І доки сам WordPress не додасть централізоване місце для доступу до шорткодів, я сумніваюся, що такий функціонал з’явиться.

Висновок

Наразі завдання організації шорткодів залишається за кожним окремим розробником. Доки у WordPress не буде розроблено централізований метод, очікуйте й надалі бачити численні кнопки «Додати шорткод» у вашій панелі керування. Чи слід додавати щось подібне до ядра WordPress, чи ні — це взагалі окрема велика дискусія.

Альтернатива

Існують плагіни конструкторів сторінок, які вирішують це інакше. Замість програмного виявлення шорткодів вони мають мапери шорткодів, де користувачі можуть вручну ввести кожну деталь шорткоду. Після цього він стає доступним у конструкторі сторінок. Хоча  це й працює, вони доступні лише на вашому власному сайті.

Ми в Page Builder Sandwich створюємо те, що, сподіваємось, зможе вирішити цю головоломку з шорткодами. Підпишіться на нашу розсилку нижче, щоб отримувати сповіщення про наш прогрес.