Шорткоды в WordPress — мощный инструмент для быстрого добавления функционала в записи и страницы. Но часто возникает задача: создать шорткод, который принимает параметры и изменяет вывод в зависимости от них. В этой статье расскажем, как автоматически создавать такие шорткоды с параметрами, чтобы легко расширять функционал сайта без лишних усилий.
Что такое шорткод с параметрами в WordPress
Шорткод с параметрами — это специальный тег в тексте, который может содержать дополнительные данные, влияющие на результат его работы. Например, [wpdownload_button text="Скачать" link="https://example.com/file.zip"] будет показывать кнопку со своим текстом и ссылкой.
Передача параметров позволяет создавать универсальные шорткоды, которые настраиваются под конкретные задачи. Это удобно, если нужно вывести разные данные, не создавая для каждого варианта отдельный шорткод.
Как зарегистрировать шорткод с параметрами: базовый пример
Для регистрации шорткода используется функция add_shortcode. В обработчике шорткода параметры передаются в виде массива. Рассмотрим простой пример создания шорткода [wpdownload_button] с параметрами text и link.
function wpdownload_create_button_shortcode($atts) {
$atts = shortcode_atts(
[
'text' => 'Скачать',
'link' => '#'
],
$atts,
'wpdownload_button'
);
return '<a href="' . esc_url($atts['link']) . '" class="wpdownload-btn">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wpdownload_button', 'wpdownload_create_button_shortcode');
Такой шорткод можно использовать с параметрами или без них, и он сработает корректно.
Автоматическое создание нескольких шорткодов с похожей логикой
Если нужно создать группу шорткодов с похожим поведением, можно автоматизировать регистрацию. Например, создать массив с названиями шорткодов и обработчиком, который будет различать их по имени.
function wpdownload_dynamic_shortcode_handler($atts, $content = null, $tag = '') {
$atts = shortcode_atts([
'text' => 'Текст по умолчанию',
'link' => '#'
], $atts, $tag);
switch ($tag) {
case 'wpdownload_button':
return '<a href="' . esc_url($atts['link']) . '" class="wpdownload-btn">' . esc_html($atts['text']) . '</a>';
case 'wpdownload_link':
return '<a href="' . esc_url($atts['link']) . '">' . esc_html($content ? $content : $atts['text']) . '</a>';
default:
return '';
}
}
foreach (['wpdownload_button', 'wpdownload_link'] as $shortcode) {
add_shortcode($shortcode, 'wpdownload_dynamic_shortcode_handler');
}
Такой подход упрощает поддержку и расширение набора шорткодов.
Использование шорткодов с параметрами для загрузок и автоматизации
На сайте wpdownload.ru часто требуется выводить ссылки для скачивания с разными атрибутами: версией файла, типом, ограничениями доступа. Для этого удобно использовать шорткоды с параметрами.
Например, можно добавить параметр version и динамически формировать ссылку:
function wpdownload_file_link_shortcode($atts) {
$atts = shortcode_atts([
'file' => '',
'version' => 'latest'
], $atts, 'wpdownload_file');
if (empty($atts['file'])) {
return '<span style="color:red;">Ошибка: файл не указан</span>';
}
$base_url = 'https://wpdownload.ru/files/';
$file_url = esc_url($base_url . $atts['version'] . '/' . $atts['file']);
return '<a href="' . $file_url . '" download>Скачать ' . esc_html($atts['file']) . ' (версия ' . esc_html($atts['version']) . ')</a>';
}
add_shortcode('wpdownload_file', 'wpdownload_file_link_shortcode');
Использование: [wpdownload_file file="plugin.zip" version="1.2.3"]
Советы по безопасности и производительности при работе с шорткодами
При создании шорткодов с параметрами важно:
- Использовать функции
esc_html()иesc_url()для защиты от XSS. - Не выполнять ресурсоёмкие операции внутри обработчика шорткода.
- Кэшировать результаты, если шорткод выводит одинаковый контент на нескольких страницах.
- Проверять обязательные параметры и выводить понятные ошибки для пользователя.
Пример кэширования вывода шорткода
function wpdownload_cached_shortcode($atts) {
$cache_key = 'wpdownload_shortcode_' . md5(json_encode($atts));
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
// Генерация контента
$content = '<div>Динамический контент с параметрами</div>';
set_transient($cache_key, $content, HOUR_IN_SECONDS);
return $content;
}
add_shortcode('wpdownload_cached', 'wpdownload_cached_shortcode');
Популярные плагины для работы с шорткодами и автоматизацией
Для более сложных задач можно использовать плагины, расширяющие возможности шорткодов:
- Clearfy Pro — плагин для оптимизации и расширения функционала, поддерживает кастомные шорткоды.
- WPRemark — для оценки контента, можно выводить результаты через шорткоды с параметрами.
- My Popup — позволяет создавать всплывающие окна, которые можно вызывать через шорткоды с параметрами.
Вывод
Автоматическое создание шорткодов с параметрами — отличное решение для гибкой настройки вывода контента на сайте WordPress. Используя указанные подходы и примеры, можно легко создавать мощные, универсальные шорткоды, которые упростят работу с сайтом и улучшат пользовательский опыт.