Шорткоды — это удобный способ добавлять динамический контент в записи и страницы WordPress без необходимости писать сложный код вручную. Однако стандартные шорткоды, встроенные в плагины или темы, не всегда покрывают все задачи. В этой статье мы подробно разберём, как создать собственный шорткод WordPress с поддержкой параметров, чтобы управлять выводом данных и расширять функциональность сайта.
Что такое шорткод и зачем нужны параметры в них
Шорткод — это специальный тег в квадратных скобках, например, [gallery], который WordPress заменяет на определённый HTML-код или функциональность. Параметры позволяют передавать шорткоду дополнительные аргументы, меняющие его поведение. Например, [gallery columns="3" size="medium"] задаёт количество колонок и размер изображений.
Использование параметров делает шорткод гибким и многофункциональным, позволяя повторно использовать один и тот же код с разными настройками.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода в WordPress используется функция add_shortcode. Она принимает два аргумента: имя шорткода и callback-функцию, которая возвращает HTML-код для вывода.
Создадим простой шорткод [wpplugin_hello], который выводит приветствие:
function wpplugin_hello_shortcode() {
return '<p>Привет от wpplugin.ru!</p>';
}
add_shortcode('wpplugin_hello', 'wpplugin_hello_shortcode');Добавьте этот код в файл functions.php вашей темы или в файл плагина. Теперь при вставке [wpplugin_hello] на страницу будет отображаться приветствие.
Добавление поддержки параметров в шорткод
Чтобы шорткод принимал параметры, callback-функция должна принимать два аргумента: массив атрибутов и содержимое между тегами, если шорткод парный. Атрибуты можно задать по умолчанию с помощью функции shortcode_atts.
Например, создадим шорткод [wpplugin_greeting name="Имя"]:
function wpplugin_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
), $atts, 'wpplugin_greeting'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на wpplugin.ru.</p>';
}
add_shortcode('wpplugin_greeting', 'wpplugin_greeting_shortcode');Теперь можно использовать [wpplugin_greeting name="Алексей"], чтобы вывести приветствие с именем.
Пример сложного шорткода с параметрами и внутренней логикой
Рассмотрим пример шорткода, который выводит список последних постов определённой категории с настройками количества и сортировки.
function wpplugin_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'category' => '',
'posts' => 5,
'order' => 'DESC',
), $atts, 'wpplugin_recent_posts'
);
$query_args = array(
'posts_per_page' => intval($atts['posts']),
'order' => $atts['order'],
'post_status' => 'publish',
);
if (!empty($atts['category'])) {
$query_args['category_name'] = sanitize_text_field($atts['category']);
}
$query = new WP_Query($query_args);
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('wpplugin_recent_posts', 'wpplugin_recent_posts_shortcode');Используйте шорткод так:
[wpplugin_recent_posts category="novosti" posts="3" order="ASC"]
Он выведет три последних поста из категории "novosti" в порядке возрастания.
Рекомендации по безопасности и оптимизации шорткодов
При создании шорткодов важно учитывать безопасность и производительность. Никогда не выводите пользовательские данные напрямую — используйте функции экранирования, например, esc_html() или esc_url().
Также избегайте сложных запросов без кеширования — если шорткод используется часто, рассмотрите внедрение transient-кеширования.
Для более сложных шорткодов, работающих с базой данных, рекомендуется проверять входные данные и использовать подготовленные запросы.
Полезные плагины для работы с шорткодами в WordPress
Если не хотите писать шорткоды с нуля, можно воспользоваться готовыми решениями:
- Shortcodes Ultimate — набор из более 50 мощных шорткодов с поддержкой параметров и кастомизации.
- WP Shortcode by MyThemeShop — простой плагин для добавления популярных шорткодов.
- Custom Content Shortcode — удобно создавать свои шорткоды с кастомным выводом.
Но если нужен уникальный функционал — создание собственного шорткода, как показано выше, всегда лучший вариант.
Итоги: создаем шорткод под задачи сайта
Создание собственного шорткода с параметрами в WordPress — это простой и мощный способ расширить возможности сайта. Это позволяет удобно вставлять динамический контент, управлять его выводом и улучшать интерфейс без изменения шаблонов.
Используйте функцию add_shortcode, обрабатывайте параметры через shortcode_atts и всегда проверяйте входные данные для безопасности. Если нужно — подключайте WP_Query для вывода постов или другую логику.
Так вы сможете быстро создавать полезные функции на wpplugin.ru и делиться опытом с коллегами.