Создание шорткодов для упрощения работы с сайтом на базе WordPress
Шорткоды впервые появились в WordPress API версии 2.5. С тех пор было выпущено большое количество плагинов, использующих шорткоды для того, чтобы помещать произвольную информацию в создаваемые пользователем страницы или публикации.
Ядро WordPress само по себе поддерживает 5 видов шорткодов, но этого зачастую бывает недостаточно. Поэтому с каждым днём веб-разработчики создают всё больше новых плагинов, в каждом из которых вводятся в обращение новые шорткоды. В этой статье я научу вас создавать свои шорткоды для WordPress.
Шорткоды позволяют использовать различные функции или стили на страницах WordPress без необходимости написания программного кода для каждого случая. Перечислю шорткоды, поддерживаемые ядром WordPress:
- ;
- ;
- ;
- ;
- .
Подробнее о шорткодах
Программный интерфейс шорткодов (Shortcode API) представляет собой простой набор функций для создания макросов, которые пользователь может использовать при создании публикаций.
Таким образом, разработчик, создавший новый вид контента, может дать пользователю возможность разместить этот контент в произвольном месте сайта.
Обычно разработчики дополняют шорткодами свои плагины и темы. Затем пользователь помещает в публикацию ключевое слово и какие-либо атрибуты, заключив их в квадратные скобки. При выводе поста WordPress заменяет содержимое квадратных скобок на результат работы плагина.
Простейшая форма использования шорткода выглядит так:
[advertisement]
Программный интерфейс шорткодов позволяет создавать шорткоды с поддержкой атрибутов. Обращение к таким шорткодам может выглядеть сложнее:
[advertisement height="100" width="100"]
Это – реклама!
[/advertisement]
Два этапа создания шорткода
- Написание первичного обработчика вывода шорткода;
- Регистрация обработчика в WordPress API.
Эти два шага являются совершенно необходимыми для создания простейшего шорткода. Если ваша функция достаточно сложна, то к этим двум шагам могут добавиться и другие.
В моей прошлой статье мы создали простой плагин для показа рекламных баннеров. Попробуем теперь разработать шорткод для баннера.
Первичный обработчик вывода шорткода
Эта функция будет выполнять всю работу по созданию того содержимого, которое заменит наш шорткод при показе страницы или публикации. Откройте файл functions.php и создайте функцию:
function advertisement_1(){
// Какой-нибудь код
}
Обработка атрибутов
Обработчики шорткодов в целом напоминают фильтры WordPress: это функции принимающие параметры (атрибуты) и возвращающие результат (контент шорткода). Поэтому добавим в функцию нашего шорткода параметры:
function advertisement_1($atts){
// Какой-нибудь код
}
Это наиболее часто используемый параметр обработчика вывода шорткода: переменная $atts представляет собой ассоциативный массив с атрибутами либо пустую строку, если атрибуты не были заданы.
Есть ещё два возможных параметра этой функции:
- $content – если шорткод использовался в обрамляющей форме, то здесь будет внутреннее содержимое шорткода;
- $tag – текст шорткода без квадратных скобок и всего остального. Полезен, если ваша функция работает с несколькими тэгами.
Содержимое шорткода
Для примера мы будем выводить то же содержимое, что и выводили в специальной «рекламной» области нашей темы в прошлой статье.
У нас есть два типа рекламных баннеров: 743 на 82 пикселя и 268 на 268 пикселей:

За извлечение этих параметров и их внедрение в шаблон темы в нашем плагине отвечает следующий код:
<?php $options = get_option( 'theme_settings' ); ?>
<?php echo $options['banner1']; ?>
Всё, что нам теперь нужно – выполнить этот код непосредственно в функции отображения шорткода и вернуть результат. Воспользуемся переменной $output для возврата баннера размером 743 на 82 пикселя:
function advertisement_1 ($atts) {
$options = get_option( 'theme_settings' );
$output = '<div>' . $options['banner1'] . '</div>';
return $output;
}
Замечание: в PHP версии 5.3 и выше мы можем создавать анонимные функции, но в данном случае этого делать не рекомендуется. Нам нужна именованная функция для того, чтобы WordPress мог её удалить в процессе отмены регистрации плагина.
Также именованная функция даст возможность сторонним разработчикам изменять функциональность нашего плагина, не затрагивая его кода. Если бы мы воспользовались анонимной функцией, результат её работы нельзя было бы изменить извне.
Регистрация обратного вызова
Теперь мы должны зарегистрировать написанную нами функцию в WordPress, чтобы ассоциировать её с шорткодом. Это делается при помощи функции add_shortcode(). Эта функция применяется так:
add_shortcode('advertisement_1', 'advertisement_1');
Имя шорткода в нашем примере совпадает с именем обрабатывающей его вывод функции. Разумеется, придерживаться такого именования необязательно.
Итак, теперь вы можете использовать шорткод [advertizement_1], чтобы отобразить баннер размером 743 на 82 пикселя в любом месте вашей страницы или поста:

Отображение второго баннера
Теперь применим все вышеперечисленные действия ко второму баннеру, который имеет размер 268 на 268 пикселей. У нас должен получиться такой код:
function advertisement_2 ($atts) {
$options = get_option( 'theme_settings' );
$output = '<div>' . $options['banner2'] . '</div>';
return $output;
}
add_shortcode('advertisement_2', 'advertisement_2');
Обратите внимание на различия в именах функции и шорткода. Кроме того, на этот раз мы использовали опцию banner2, чтобы извлечь адрес второго баннера из настроек плагина:

Подведение итогов
Поздравляю! Вы только что научились дополнять собственные плагины и темы шорткодами. Надеюсь, эта статья вам пригодится.
Если хотите что-то спросить или высказаться по теме нашего урока, можете воспользоваться формой для комментирования.