Шорткоды (shortcode)
Это короткие коды, похожие на bb-код и обрабатываются в тексте записи (или произвольном тексте).
Рассмотрим простой пример создания шорткода для вывода SPAN с произвольным css-классом. Шорткод будет вида:
[class t-red]text page[/class] или [class=t-red]text page[/class]
что в итоге преобразуется в
<span class="t-red">text page</span>
Отдельный файл шорткода
Удобней всего вынести код шорткода отдельно, например в custom/shortcode/sh.php
и подключать в custom/my-template.php
if ($fn = mso_fe('custom/shortcode/sh.php')) require_once $fn; ...
Регистрация шорткода
Обработку шорткода выполняет собственная произвольная функция, которую нужно зарегистрировать с помощью функции mso_shortcode_add()
в файле шорткода.
mso_shortcode_add('class', 'my_sh');
где class
— и есть шорткод, а my_sh
— функция обработчик.
Функция шорткода
Функция my_sh
имеет единственный параметр, в котором будет массив атрибутов. В простом варианте использования массив содержит все атрибуты шорткода, включая текст.
function my_sh($attr) { return '<span class="' . $attr[1] . '">' . $attr[2] . '</span>'; }
При создании шорткода желательно не использовать аналогичные варианты существующих BB-кодов.
Шорткод с множеством параметров
Шорткод может содержать множество параметров, например:
[lbox mini.jpg title="Титул" class="класс"]full.jpg[/lbox]
В этом случае функция должна самостоятельно выполнить парсинг атрибутов. Для этого можно воспользоваться вспомогательной функцией mso_shortcode_parse()
function my_lbox($attr) { $all = mso_shortcode_parse($attr, array('class'=>'', 'title'=>'')); pr($all); /* Array ( [class] => класс [title] => Титул [content] => full.jpg [0] => mini.jpg ) */ ... }
Выполнение шорткода в произвольном тексте
Для того, чтобы обработать текст с использованием шорткода, используется функция mso_shortcode('шорткод', 'имя функции шорткода', 'текст')
.