Шорткоды — это один из самых удобных способов добавлять функциональность в записи и страницы WordPress без необходимости писать много кода прямо в редакторе. Если стандартных шорткодов недостаточно, или вы хотите сделать уникальные элементы на вашем сайте, создание собственных шорткодов — лучший путь. В этой статье мы подробно разберём, как создавать собственные шорткоды, как их регистрировать и безопасно использовать, а также приведём живые примеры кода.
Что такое шорткод в WordPress и зачем создавать свои
Шорткод — это упрощённый тег в квадратных скобках, который WordPress автоматически заменяет на определённый контент или функционал при выводе страницы. Например, стандартный шорткод [gallery] выводит галерею изображений.
Создание своих шорткодов позволяет:
- Вставлять динамический контент без постоянного редактирования темы или плагинов.
- Упрощать работу редакторов и авторов сайта, предоставляя готовые блоки.
- Повысить гибкость и расширяемость своего сайта.
Рассмотрим, как это сделать правильно и с практическими примерами.
Как зарегистрировать собственный шорткод в WordPress
Для добавления шорткода используется функция add_shortcode. Она принимает два параметра: название шорткода и функцию-обработчик, которая возвращает HTML или другой вывод.
Пример регистрации самого простого шорткода:
function wpunit_hello_shortcode() {
return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('wpunit_hello', 'wpunit_hello_shortcode');После добавления этого кода в файл functions.php вашей темы или в файл вашего плагина, вы сможете использовать шорткод [wpunit_hello] в любом месте контента, и он выведет заданный текст.
Важно, чтобы функция возвращала результат через return, а не выводила через echo, иначе шорткод может работать некорректно.
Рекомендации по именованию функций
Чтобы избежать конфликтов, лучше давать функции имена с префиксом, например, wpunit_ — это имя домена вашего сайта, что помогает структурировать код и снижает вероятность повторов.
Создание шорткода с атрибутами и динамическим контентом
Шорткоды могут принимать параметры, которые задаются в квадратных скобках, например, [wpunit_hello name="Иван"]. Эти параметры передаются в функцию в виде массива.
Пример шорткода с атрибутами:
function wpunit_hello_name_shortcode($atts) {
// Задаём значения по умолчанию
$atts = shortcode_atts(
array(
'name' => 'гость',
), $atts, 'wpunit_hello_name'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на сайт.</p>';
}
add_shortcode('wpunit_hello_name', 'wpunit_hello_name_shortcode');Теперь при использовании шорткода [wpunit_hello_name name="Алексей"] на сайте выведется «Привет, Алексей! Добро пожаловать на сайт.»
Безопасность данных в шорткодах
Обязательно используйте функции экранирования, такие как esc_html(), чтобы предотвратить XSS-уязвимости, особенно если параметры шорткода вводятся пользователем или берутся из внешних источников.
Пример сложного шорткода: вывод списка последних записей
Рассмотрим пример шорткода, который выводит список последних записей блога с возможностью задавать количество и категорию через атрибуты.
function wpunit_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => '',
), $atts, 'wpunit_recent_posts'
);
$args = array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish',
);
if (!empty($atts['category'])) {
$args['category_name'] = sanitize_text_field($atts['category']);
}
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Записей не найдено.</p>';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
return $output;
}
add_shortcode('wpunit_recent_posts', 'wpunit_recent_posts_shortcode');Пример вызова шорткода:
[wpunit_recent_posts count="3" category="novosti"]
Этот шорткод выведет список из 3 последних записей категории «новости».
Использование шорткодов в PHP шаблонах
Иногда возникает задача использовать шорткод не только в редакторе, но и напрямую в PHP-шаблонах темы. Для этого служит функция do_shortcode().
Пример:
echo do_shortcode('[wpunit_hello_name name="Мария"]');Так вы можете интегрировать шорткод в любой участок шаблона.
Популярные плагины для расширения возможностей шорткодов
Если вы хотите создавать сложные шорткоды без глубокого программирования, обратите внимание на такие плагины:
- Shortcodes Ultimate — огромный набор готовых шорткодов с визуальным редактором.
- WP Shortcode by MyThemeShop — удобный плагин с часто используемыми элементами.
- Custom Content Shortcode — позволяет создавать собственные шорткоды через интерфейс.
Однако если у вас есть базовые знания PHP, создание собственных шорткодов — самый гибкий и производительный вариант.
Советы по отладке и тестированию шорткодов
При разработке шорткодов обязательно:
- Тестируйте вывод на разных страницах и с разными параметрами.
- Проверяйте, что функции не вызывают ошибок и не влияют на производительность.
- Используйте
wp_reset_postdata()после запросов WP_Query, чтобы избежать конфликтов с основным циклом. - Соблюдайте стандарты кодирования и именования функций.
Это поможет вам создавать надёжные и удобные шорткоды для любых задач.