Шорткоды — один из самых удобных способов расширить функционал вашего сайта на WordPress, позволяя вставлять динамический контент в записи, страницы и виджеты. Но что если стандартного шорткода недостаточно, и вам нужно сделать его гибким, управляя поведением через атрибуты?
Что такое атрибуты шорткодов и зачем они нужны
Атрибуты — это параметры, которые вы передаёте в шорткод для изменения его работы. Например, если у вас есть шорткод, который выводит список последних записей, с помощью атрибута можно указать количество выводимых постов или категорию. Это позволяет создавать универсальные и настраиваемые компоненты, которые легко адаптировать под разные задачи.
Без атрибутов шорткод — это просто фиксированный блок контента, а с атрибутами он становится полноценным инструментом с множеством вариантов использования.
Как зарегистрировать шорткод с атрибутами в WordPress
Регистрация шорткода в WordPress происходит через функцию add_shortcode(). Для поддержки атрибутов внутри функции-обработчика нужно использовать функцию shortcode_atts(), которая задаёт значения по умолчанию и объединяет их с переданными пользователем.
Давайте рассмотрим пример создания кастомного шорткода [wpkeys_greeting], который выводит приветствие с возможностью указать имя через атрибут.
function wpkeys_greeting_shortcode($atts) {
// Устанавливаем значения по умолчанию
$atts = shortcode_atts(
array(
'name' => 'Гость',
'time' => 'день' // утро, день, вечер
), $atts, 'wpkeys_greeting'
);
// Формируем приветствие в зависимости от времени суток
switch ($atts['time']) {
case 'утро':
$greeting = 'Доброе утро';
break;
case 'вечер':
$greeting = 'Добрый вечер';
break;
default:
$greeting = 'Добрый день';
}
return "<p>$greeting, {$atts['name']}!</p>";
}
add_shortcode('wpkeys_greeting', 'wpkeys_greeting_shortcode');Теперь в редакторе можно использовать шорткод так:
[wpkeys_greeting name="Алексей" time="утро"]
И он выведет: Доброе утро, Алексей!
Расширение функционала: обработка вложенных атрибутов и безопасности
В реальных проектах атрибуты могут быть сложнее — например, список категорий, фильтры по дате или сложные настройки. Важно учитывать безопасность, обрабатывая входные данные, чтобы избежать XSS-уязвимостей и других проблем.
В нашем примере можно добавить фильтрацию и экранирование:
function wpkeys_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
'time' => 'день'
), $atts, 'wpkeys_greeting'
);
// Экранируем имя для безопасности
$name = sanitize_text_field($atts['name']);
$time = sanitize_text_field($atts['time']);
switch ($time) {
case 'утро':
$greeting = 'Доброе утро';
break;
case 'вечер':
$greeting = 'Добрый вечер';
break;
default:
$greeting = 'Добрый день';
}
return "<p>" . esc_html($greeting) . ", " . esc_html($name) . "!</p>";
}
add_shortcode('wpkeys_greeting', 'wpkeys_greeting_shortcode');Использование функций sanitize_text_field() и esc_html() гарантирует, что пользователь не сможет вставить вредоносный код.
Примеры популярных плагинов для работы с шорткодами и атрибутами
Если вы не хотите писать шорткоды вручную, можно использовать плагины, которые облегчают создание и управление:
- Shortcodes Ultimate — мощный набор готовых шорткодов с поддержкой атрибутов и визуальным редактором.
- WP Shortcode by MyThemeShop — простой в использовании плагин с базовым набором шорткодов и возможностью расширения.
- Custom Content Shortcode — позволяет создавать собственные шорткоды с помощью интерфейса без кодинга.
Однако в некоторых случаях написание собственного шорткода даёт максимальную гибкость и оптимизацию.
Практические советы по созданию и тестированию шорткодов с атрибутами
Выбор уникального имени
Всегда используйте префиксы, связанные с вашим проектом или доменом (например, wpkeys_), чтобы избежать конфликтов с другими плагинами.
Документирование параметров
Опишите каждый атрибут шорткода, допустимые значения и поведение по умолчанию, чтобы пользователи понимали, как его использовать.
Тестирование на разных версиях PHP и WordPress
Проверяйте работу шорткода на актуальных версиях CMS и PHP, особенно если используете современные функции.
Оптимизация вывода
Избегайте излишних запросов к базе или тяжелых операций в шорткодах. Если нужно, кэшируйте результаты.
Заключение: почему стоит использовать шорткоды с атрибутами
Шорткоды с атрибутами — мощный инструмент для разработки на WordPress, позволяющий создавать динамичный, настраиваемый контент без изменения темы или плагинов. Они делают ваш сайт гибким, удобным и расширяемым, что особенно важно в современных проектах.
Используйте приведённые примеры и рекомендации, чтобы создавать собственные шорткоды для wpkeys.ru и других проектов с максимальной пользой и безопасностью.