Собственные шорткоды (shortcodes) для WordPress

С шорткодами WordPress сталкиваются, если не все, то почти все, кто имел дело с этой CMS.

Шорткод представляет собой специальную функцию, написанную на языке php, которую можно использовать в тексте страницы или записи при помощи системы условных обозначений.

Имена шорткодов и их параметры (при наличии) заключаются в квадратные скобки. При показе на сайте WordPress заменяет эту конструкцию сгенерированным содержимым.

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

Для того чтобы добавить шорткод в WordPress нужно написать функцию, которая будет вызываться при каждом использовании шорткода. Затем связать её с определённым шорткодом при помощи функции add_shortcode.

Эта функция имеет следующий синтаксис:

Параметр my_shortcode – это собственно имя шорткода, а my_shortcode_func – функция, которая будет вызываться при его использовании.

Имя шорткода может включать только буквы латинского алфавита в нижнем регистре и символ подчёркивания. А, функция должна обязательно возвращать значение (даже если это просто строка).

Простой шорткод

Напишем функцию, которая будет возвращать обычную текстовую строку, и свяжем её с шорткодом.

В результате, когда в тексте страницы или записи будет присутствовать шорткод [helloworld] он будет заменён на абзац «Hello, World!!!».

Важно ещё раз обратить внимание на то, что вывод текстовой строки осуществляется именно с помощью return (возврат значения функции), а не echo.

Шорткод с параметрами

Шорткоды могут иметь свои параметры.

Параметры шорткодов реализуются в виде ассоциативного массива, который передаётся в соответствующую функцию в виде её входного параметра. Внутри функции данный массив ассоциируется с необходимыми параметрами с помощью функции WordPress shortcode_atts.

Функция shortcode_atts принимает три параметра. Значения параметров шорткода по умолчанию (в виде ассоциативного массива), имя параметра функции, через который передаются параметры шорткода, имя шорткода. Если выполняется ассоциация параметров для того шорткода, который реализует данная конкретная функция, последний параметр необязателен.

Доработаем предыдущий пример таким образом, чтобы с помощью параметров шорткода можно было изменять стиль содержимого.

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

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

Закрывающийся шорткод

Закрывающиеся шорткоды отличаются от «обычных» тем, что имеют в своём составе, так называемый, «закрывающий» код (по аналогии с закрывающим тегом HTML).

Например:

Обычно, такие шорткоды используются для операций с фрагментами текста. Визуального оформления, вставки гиперссылок и т.д.

Содержимое расположенное внутри такого шорткода передаётся в реализующую его функцию отдельным параметром, который должен иметь значение по умолчанию null.

Ниже представлен шорткод, который превратит текст в гиперссылку.

Вложенные шорткоды

Закрывающиеся шорткоды могут содержать внутри себя и другие шорткоды. Но, для того этого необходимо воспользоваться функцией do_shortcode. В противном случае WordPress может неверно интерпретировать вложенный шорткод. Тогда, например, в тексте той же гиперссылки будет отображён сам вложенный шорткод, а вовсе не результат его работы.

Функция do_shortcode принимает два параметра. Первый, это само содержимое, которое может содержать шорткоды. Второй, указывает игнорировать ли в том содержимом, которое передаётся в первом параметре шорткоды внутри HTML-элементов. Второй параметр имеет по умолчанию значение false и не является обязательным.

Доработаем предыдущий пример так чтобы он мог работать со вложенными шорткодами.

Вложим в шорткод [mylink] шорткод [helloworld] из самого первого примера.

В результате, на сайте будет показана гиперссылка с текстом «Hello, World!!!»

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

При помощи шорткодов можно добавить на сайт страницу с формой для заказа товара или услуги, опрос (голосование), выполнять сложное форматирование текста и даже добавить на сайт целый форум (как это сделано, например, в плагине bbPress).

Данная статья описывает только сам принцип работы шорткодов.  А, что будет реализовано с их помощью, зависит от конкретной разработки.

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

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