Шорткоды — один из самых удобных способов расширить функциональность сайта на WordPress без необходимости править шаблоны или создавать сложные плагины. Сегодня расскажу, как создать собственный шорткод, который принимает параметры, и покажу практические примеры использования.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это специальный тег в квадратных скобках, который WordPress автоматически заменяет на определённый контент. Например, [gallery] выводит галерею изображений, а [audio] — аудиоплеер. Создавая собственные шорткоды, вы можете быстро добавлять функционал, который повторяется на разных страницах, управлять выводом и настраивать поведение с помощью параметров.
Преимущества пользовательских шорткодов:
- Удобство вставки сложных элементов в контент без знаний кода.
- Возможность параметризации для гибкой настройки вывода.
- Лёгкость интеграции в любую тему или плагин.
Как зарегистрировать шорткод в WordPress — базовый пример
Для регистрации шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и функцию-обработчик, которая возвращает HTML-код для вывода.
Пример простого шорткода без параметров:
function wplite_hello_shortcode() {
return '<p>Привет от WP Lite!</p>';
}
add_shortcode('wplite_hello', 'wplite_hello_shortcode');В редакторе WordPress при вставке [wplite_hello] отобразится «Привет от WP Lite!».
Добавляем параметры к шорткоду — гибкий вывод
Чтобы сделать шорткод полезнее, можно добавить поддержку параметров. Это позволяет пользователю изменять содержимое или поведение шорткода без изменения кода.
Пример шорткода с параметром name:
function wplite_greet_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wplite_greet'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WP Lite.</p>';
}
add_shortcode('wplite_greet', 'wplite_greet_shortcode');Теперь можно использовать шорткод так: [wplite_greet name="Алексей"]. Выведется «Привет, Алексей! Добро пожаловать на WP Lite.»
Пояснения к коду
shortcode_atts()— функция для объединения переданных параметров с дефолтными значениями.- Санитизация
esc_html()нужна для безопасности, чтобы избежать XSS-уязвимостей.
Примеры полезных пользовательских шорткодов
Шорткод вывода текущей даты с форматированием
function wplite_date_shortcode($atts) {
$atts = shortcode_atts(
array('format' => 'd.m.Y'),
$atts,
'wplite_date'
);
return date($atts['format']);
}
add_shortcode('wplite_date', 'wplite_date_shortcode');Использование: [wplite_date format="Y-m-d"] выведет, например, 2024-06-10.
Шорткод для кнопки с ссылкой и настройкой цвета
function wplite_button_shortcode($atts) {
$atts = shortcode_atts(
array(
'url' => '#',
'text' => 'Нажми меня',
'color' => '#0073aa'
),
$atts,
'wplite_button'
);
$url = esc_url($atts['url']);
$text = esc_html($atts['text']);
$color = esc_attr($atts['color']);
return '<a href="' . $url . '" style="
display: inline-block;
padding: 10px 20px;
background-color: ' . $color . ';
color: #fff;
text-decoration: none;
border-radius: 4px;"
target="_blank">' . $text . '</a>';
}
add_shortcode('wplite_button', 'wplite_button_shortcode');Пример использования: [wplite_button url="https://wplite.ru" text="Перейти на сайт" color="#e74c3c"]
Как зарегистрировать шорткод в плагине или functions.php
Для наилучшей практики пользовательские шорткоды лучше добавлять через плагин или в файл functions.php активной темы. Если шорткод относится к функционалу сайта, который не должен зависеть от темы, рекомендуется создавать отдельный плагин.
Пример минимального плагина с шорткодом:
<?php
/**
* Plugin Name: WP Lite Shortcodes
* Description: Пользовательские шорткоды для сайта WP Lite.
* Version: 1.0
* Author: Ваше Имя
*/
function wplite_hello_shortcode() {
return '<p>Привет от WP Lite!</p>';
}
add_shortcode('wplite_hello', 'wplite_hello_shortcode');Отладка и советы по безопасности при создании шорткодов
При создании шорткодов важно помнить о безопасности и производительности:
- Всегда фильтруйте и санитизируйте входящие параметры с помощью функций
esc_html(),esc_attr(),esc_url()и др. - Не выполняйте опасный код, если параметры пришли от пользователя.
- Проверяйте корректность данных, особенно если они используются в SQL-запросах или для вызова внешних API.
- Для сложных шорткодов лучше разделять логику и вывод — сначала формируйте данные, потом возвращайте готовый HTML.
Если шорткод выводит большой объём данных, подумайте о кешировании результата с помощью транзиентов (set_transient(), get_transient()).
Заключение
Создание пользовательских шорткодов с поддержкой параметров — мощный инструмент для расширения возможностей WordPress без глубоких знаний PHP и JavaScript. Используйте правильные методы регистрации, фильтрации и возвращайте корректный HTML. Это позволит вам создавать удобные и гибкие функциональные блоки, которые легко использовать в любых записях и страницах сайта.