Вопросы и ответы
Вебмастеру
Шорткоды (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('шорткод', 'имя функции шорткода', 'текст')
.