Шорткоды — это мощный инструмент WordPress, позволяющий вставлять динамический контент в записи, страницы и виджеты без необходимости писать код каждый раз. В этой статье мы подробно разберем, как создать собственный шорткод, какие возможности он открывает и приведем конкретные примеры реализации.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, который WordPress заменяет на определенный контент, когда страница выводится на экран. Например, [gallery] выводит галерею изображений, а [audio] — аудиоплеер.
Создание своих шорткодов позволяет добавлять на сайт сложный функционал без сложных правок шаблонов или плагинов. Это удобно как для разработчиков, так и для контент-менеджеров.
Кроме того, шорткоды можно использовать в виджетах, что расширяет возможности кастомизации сайта.
Регистрация простого пользовательского шорткода
Для начала создадим элементарный шорткод, который выводит приветствие. Регистрация шорткода происходит через функцию add_shortcode. В целях безопасности и удобства код помещаем в functions.php вашей темы или создаем небольшой плагин.
<?php
function wpquery_hello_shortcode($atts) {
$atts = shortcode_atts(array(
'name' => 'гость',
), $atts, 'wpquery_hello');
return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на сайт.';
}
add_shortcode('wpquery_hello', 'wpquery_hello_shortcode');
?>Теперь в любом месте сайта можно использовать шорткод [wpquery_hello name="Иван"], и он выведет: Привет, Иван! Добро пожаловать на сайт.
Функция shortcode_atts обеспечивает удобную работу с параметрами по умолчанию.
Шорткод с поддержкой вложенного контента и атрибутов
Иногда нужно создавать шорткод, который может содержать вложенный контент, например, оборачивать текст в стилизованный блок. Для этого функция шорткода должна принимать второй параметр $content.
<?php
function wpquery_box_shortcode($atts, $content = null) {
$atts = shortcode_atts(array(
'color' => 'yellow',
), $atts, 'wpquery_box');
$color = esc_attr($atts['color']);
$content = do_shortcode($content);
return '<div style="background-color:' . $color . '; padding: 15px; border-radius: 5px;">' . $content . '</div>';
}
add_shortcode('wpquery_box', 'wpquery_box_shortcode');
?>Пример использования в редакторе:
[wpquery_box color="lightblue"]Это важное сообщение![/wpquery_box]
В результате вы получите красивый цветной блок с текстом внутри.
Использование шорткодов для вывода данных из базы данных
Шорткоды отлично подходят для динамического вывода данных, например, списка последних записей, кастомных типов или данных из внешних таблиц.
Рассмотрим пример шорткода, который выводит последние 5 записей определенной категории.
<?php
function wpquery_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'category' => '',
'count' => 5,
), $atts, 'wpquery_recent_posts');
$query = new WP_Query(array(
'category_name' => sanitize_text_field($atts['category']),
'posts_per_page' => intval($atts['count']),
));
if (!$query->have_posts()) {
return '<p>Записей не найдено.</p>';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
return $output;
}
add_shortcode('wpquery_recent_posts', 'wpquery_recent_posts_shortcode');
?>Пример использования:
[wpquery_recent_posts category="novosti" count="3"]
Этот шорткод выведет 3 последние записи из категории "новости" в виде списка с ссылками.
Рекомендуемые плагины для работы с шорткодами
Для расширения возможностей шорткодов и удобства их создания стоит обратить внимание на следующие плагины:
- Shortcodes Ultimate — содержит набор из более 50 готовых шорткодов с визуальным редактором.
- WP Shortcode by MyThemeShop — простой плагин с популярными элементами для контента.
- Custom Content Shortcode — позволяет создавать кастомные шорткоды из HTML и PHP кода без программирования.
Используя эти плагины, можно быстро добавить сложный функционал без глубоких знаний PHP.
Советы по безопасности при создании шорткодов
При написании своих шорткодов обязательно фильтруйте и экранируйте входящие данные. Используйте функции esc_html, esc_attr, sanitize_text_field и подобные. Это защитит сайт от XSS-атак и других уязвимостей.
Кроме того, избегайте прямого вывода пользовательского ввода без обработки. Если шорткод выполняет запросы к базе данных, используйте подготовленные запросы и WP_Query.
Также следите за производительностью. Не размещайте в шорткодах тяжелые операции, которые могут замедлить загрузку страницы.