В WordPress шорткоды — это мощный инструмент для добавления динамического контента в записи, страницы и виджеты. Но намного удобнее использовать шорткоды с атрибутами, которые позволяют настраивать вывод без необходимости создавать отдельные шорткоды под каждую задачу.
Что такое атрибуты шорткода и зачем они нужны
Атрибуты шорткода — это параметры, которые передаются внутрь шорткода для изменения его поведения или вывода. Например, если у вас есть шорткод для отображения кнопки, атрибуты могут задавать текст на кнопке, цвет, ссылку и другие параметры.
Использование атрибутов позволяет сделать шорткод универсальным и гибким без дублирования кода. Это особенно важно для поддержки и масштабируемости сайта.
Как правильно регистрировать шорткод с атрибутами в WordPress
Для регистрации шорткода с атрибутами используется функция add_shortcode. Основная логика обработки атрибутов происходит внутри функции обратного вызова, которая принимает массив атрибутов и контент.
Рассмотрим пример создания шорткода [wpzoom_button] с атрибутами text, url и color:
function wpzoom_button_shortcode($atts) {
// Задаём значения по умолчанию для атрибутов
$atts = shortcode_atts(
array(
'text' => 'Нажми меня',
'url' => '#',
'color' => 'blue',
),
$atts,
'wpzoom_button'
);
// Экранируем значения для безопасности
$text = esc_html($atts['text']);
$url = esc_url($atts['url']);
$color = esc_attr($atts['color']);
// Возвращаем HTML кнопки с заданными параметрами
return '<a href="' . $url . '" class="wpzoom-btn wpzoom-btn-' . $color . '">' . $text . '</a>';
}
add_shortcode('wpzoom_button', 'wpzoom_button_shortcode');В этом примере мы используем функцию shortcode_atts для объединения переданных атрибутов с дефолтными значениями, что позволяет избежать ошибок, если пользователь не указал какой-то параметр.
Добавление стилей для шорткода с атрибутами
Чтобы кнопка выглядела красиво, добавим стили в файл темы или подключим их через функцию:
function wpzoom_enqueue_styles() {
wp_enqueue_style('wpzoom-shortcode-style', get_stylesheet_directory_uri() . '/css/wpzoom-shortcodes.css');
}
add_action('wp_enqueue_scripts', 'wpzoom_enqueue_styles');В файле wpzoom-shortcodes.css можно описать стили для кнопок:
.wpzoom-btn {
padding: 10px 20px;
color: #fff;
text-decoration: none;
border-radius: 3px;
display: inline-block;
font-weight: 600;
}
.wpzoom-btn-blue { background-color: #0073aa; }
.wpzoom-btn-red { background-color: #d63638; }
.wpzoom-btn-green { background-color: #46b450; }Использование шорткода с атрибутами на практике
Теперь, когда шорткод зарегистрирован и стили подключены, можно использовать его в редакторе WordPress с разными параметрами:
[wpzoom_button text="Подробнее" url="https://wpzoom.ru" color="red"]— красная кнопка с текстом «Подробнее» и ссылкой на wpzoom.ru[wpzoom_button url="https://example.com" color="green"]— зелёная кнопка с дефолтным текстом[wpzoom_button text="Купить"]— синяя кнопка с заданным текстом и дефолтной ссылкой
Такой подход значительно упрощает редактирование контента и даёт гибкость при создании страниц.
Расширение шорткода: обработка вложенного контента
Помимо атрибутов, шорткоды могут принимать внутренний контент, например, текст между тегами [wpzoom_button]Текст кнопки[/wpzoom_button]. Давайте расширим наш шорткод, чтобы он учитывал этот контент.
function wpzoom_button_shortcode($atts, $content = null) {
$atts = shortcode_atts(
array(
'url' => '#',
'color' => 'blue',
),
$atts,
'wpzoom_button'
);
$text = $content ? esc_html($content) : 'Нажми меня';
$url = esc_url($atts['url']);
$color = esc_attr($atts['color']);
return '<a href="' . $url . '" class="wpzoom-btn wpzoom-btn-' . $color . '">' . $text . '</a>';
}
add_shortcode('wpzoom_button', 'wpzoom_button_shortcode');Теперь можно использовать шорткод так:
[wpzoom_button url="https://wpzoom.ru" color="green"]Перейти на WPZoom</wpzoom_button]
Это позволяет ещё больше кастомизировать вывод, комбинируя атрибуты и содержимое.
Дополнительные советы по безопасности и производительности
При работе с атрибутами важно обязательно использовать функции экранирования: esc_html, esc_url, esc_attr. Это защитит сайт от XSS-атак и некорректных данных.
Если шорткод генерирует сложный HTML или требует подключения скриптов, лучше делать это через wp_enqueue_script и wp_enqueue_style, чтобы не загружать лишнее на всех страницах.
Для оптимизации можно кешировать результат шорткода, если он не меняется часто. Это можно сделать через транзиенты или объектный кеш WordPress.
Заключение и полезные плагины для работы с шорткодами
Создание шорткодов с атрибутами — обязательный навык для разработчиков на WordPress. Это позволяет создавать универсальные и мощные элементы, которые легко использовать в редакторе.
Если хотите упростить работу с шорткодами, обратите внимание на плагины, такие как Clearfy Pro, который помогает оптимизировать и управлять шорткодами и другими функциями сайта.
Также полезен плагин WPRemark для создания пользовательских шорткодов без программирования.