Шорткоды в WordPress появились с версии 2,5 и мало кем используются. А зря, шорткоды позволяют упростить и ускорить написание статей. Представьте, что вы просто напечатали слово adv и вместо этого появился блок адсенса или директа. Удобно, не правда ли?

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

Работают они довольно просто, перед публикацией поста, слово со скобками заменяется на результат функции, описанной для данного шорткода в файле functions.php и сохраняется в БД.

Создание простейшего шорткода.

Для начала, нам необходимо определить функцию, которая будет выполняться при вызове шорткода. Например, выведем какой-либо баннер (напомню, что вывести можно практически всё).

Добавляем следующий код в functions.php

Function banner(){
	return "<a href='http://site.ru'></a>";
}

Функция есть, осталось сделать из неё шорткод. Для этого воспользуемся функцией add_shortcode(). Пишем следующую строчку после определения функции

add_shortcode('adv','banner');

Первый параметр функции это название шорткода, второй – имя функции.

Вот и всё, простой шорткод создан. Вызывать его можно написав в html редакторе

[adv]

Это был простой шорткод, пора его усложнить. Открываем файл functions.php и пишем следующее

function myUrl($atts, $link = null) {
extract(shortcode_atts(array(
"href" => 'http://'
), $atts));
return '<a href="'.$href.'">'.$link.'</a>';
}

Делаем из функции шорткод

add_shortcode("url", "myUrl");

Использовать его можно так

[url ="http://bewebmaster.ru"]блог Bewebmaster[/url]

Тем самым выведется ссылка, ведущая на bewebmster.ru с анкором блог Bewebmaster.

Добавление шорткодов в виджеты.

Если добавить шорткод в виджет, ничего не будет. Однако, не беда. Есть способ «включить» эту фишку. Для этого добавим ещё немного кода в файл functions.php

add_filter('widget_text', 'do_shortcode');

В принципе, то что мы написали легко можно объяснить. Функция widget_text отвечает за вывод текстового виджета. Мы добавили к ней фильтр, позволив использовать функцию do_shortcode, которая через API преобразует наши шорткоды.