Шорткоды в WordPress
22 мая 2012| Рубрика: Wordpress
Шорткоды в 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 преобразует наши шорткоды.