Что такое шорткоды с параметрами в WordPress и зачем они нужны
Шорткоды — это удобный способ добавлять функционал в записи и страницы без необходимости писать сложный код в редакторе. Но иногда простой шорткод с фиксированным выводом не решает задачи. Для более гибкой настройки контента используются шорткоды с параметрами — они позволяют передавать значения, которые изменяют поведение шорткода при выводе.
Например, шорткод [button url="https://wpwebsite.ru" text="Перейти на сайт"] выведет кнопку с указанным текстом и ссылкой. Параметры url и text делают шорткод универсальным и настраиваемым.
Использование параметров расширяет возможности создания динамичного контента, экономит время и облегчает поддержку сайта.
Как зарегистрировать шорткод с параметрами: пример кода для wpwebsite.ru
В WordPress шорткоды создаются через функцию add_shortcode, которая принимает имя шорткода и callback-функцию для вывода. Чтобы добавить параметры, callback-функция принимает массив атрибутов.
Ниже пример простого шорткода с параметрами для кнопки:
function wpwebsite_button_shortcode($atts) {
$atts = shortcode_atts(
array(
'url' => '#',
'text' => 'Кнопка',
'color' => 'blue'
), $atts, 'wpwebsite_button'
);
return '<a href="'.esc_url($atts['url']).'" style="display:inline-block;padding:10px 20px;background-color:'.esc_attr($atts['color']).';color:#fff;text-decoration:none;border-radius:4px;">'.esc_html($atts['text']).'</a>';
}
add_shortcode('wpwebsite_button', 'wpwebsite_button_shortcode');Теперь вы можете использовать шорткод так: [wpwebsite_button url="https://wpwebsite.ru" text="Перейти" color="green"]
Он выведет стилизованную кнопку зеленого цвета с ссылкой.
Расширенные параметры и обработка ошибок в шорткодах WordPress
Важно не только принимать параметры, но и валидировать их, чтобы избежать проблем с безопасностью и отображением. Например, проверять URL через esc_url, а текст через esc_html.
Также можно задавать значения по умолчанию, чтобы шорткод работал даже без параметров.
Если параметр обязателен, можно добавить проверку и выводить предупреждение или использовать значение по умолчанию:
function wpwebsite_alert_shortcode($atts) {
$atts = shortcode_atts(
array('type' => 'info', 'message' => ''), $atts, 'wpwebsite_alert'
);
if (empty($atts['message'])) {
return '<div style="color:red;">Ошибка: сообщение не указано.</div>';
}
$colors = array('info' => '#d9edf7', 'warning' => '#fcf8e3', 'error' => '#f2dede');
$color = isset($colors[$atts['type']]) ? $colors[$atts['type']] : $colors['info'];
return '<div style="background-color:'.esc_attr($color).';padding:10px;border-radius:3px;">'.esc_html($atts['message']).'</div>';
}
add_shortcode('wpwebsite_alert', 'wpwebsite_alert_shortcode');Пример использования: [wpwebsite_alert type="warning" message="Это предупреждение!"]
Примеры практического применения шорткодов с параметрами
1. Кнопки с разным стилем и ссылками
Как мы уже рассмотрели, шорткоды позволяют создавать кнопки с параметрами url, текст и цвет. Это удобно для быстрого добавления призывов к действию в любых местах сайта.
2. Вывод последних записей с фильтрами
Шорткод может принимать параметры категории, количества записей и формата вывода:
function wpwebsite_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array('count' => 5, 'category' => ''), $atts, 'wpwebsite_recent_posts');
$args = array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish',
);
if (!empty($atts['category'])) {
$args['category_name'] = sanitize_text_field($atts['category']);
}
$posts = get_posts($args);
if (empty($posts)) {
return '<p>Записей не найдено.</p>';
}
$output = '<ul>';
foreach ($posts as $post) {
$output .= '<li><a href="'.get_permalink($post).'">'.esc_html(get_the_title($post)).'</a></li>';
}
$output .= '</ul>';
return $output;
}
add_shortcode('wpwebsite_recent_posts', 'wpwebsite_recent_posts_shortcode');Используйте так: [wpwebsite_recent_posts count="3" category="novosti"]
3. Встраивание видео с настраиваемыми параметрами
Если хотите вставить видео с параметрами ширины и высоты, можно сделать так:
function wpwebsite_video_shortcode($atts) {
$atts = shortcode_atts(array(
'url' => '',
'width' => '560',
'height' => '315'
), $atts, 'wpwebsite_video');
if (empty($atts['url'])) {
return '<p>Ошибка: URL видео не указан.</p>';
}
$url = esc_url($atts['url']);
$width = intval($atts['width']);
$height = intval($atts['height']);
return '<iframe width="'. $width .'" height="'. $height .'" src="'. $url .'" frameborder="0" allowfullscreen></iframe>';
}
add_shortcode('wpwebsite_video', 'wpwebsite_video_shortcode');Пример использования: [wpwebsite_video url="https://www.youtube.com/embed/dQw4w9WgXcQ" width="640" height="360"]
Использование плагина Clearfy Pro для управления шорткодами и оптимизации
Если вы хотите упростить работу с шорткодами и улучшить производительность сайта, рекомендуем обратить внимание на плагин Clearfy Pro. Он помогает отключать ненужные шорткоды на страницах, очищать базу от мусора и оптимизировать загрузку.
Особенно полезен, если на сайте много кастомных шорткодов с параметрами и вы хотите контролировать их вывод.
Советы по безопасности и производительности при работе с шорткодами
При создании шорткодов с параметрами важно всегда фильтровать входящие данные. Используйте функции esc_html, esc_url, sanitize_text_field и другие в зависимости от типа данных.
Избегайте выполнения тяжелых запросов внутри шорткодов без кеширования, чтобы не замедлять сайт.
Для сложных шорткодов можно использовать transient API для кеширования результата.
Заключение
Шорткоды с параметрами — мощный инструмент для расширения функционала WordPress без необходимости создавать отдельные шаблоны или плагины. С правильной реализацией они делают ваш сайт более динамичным и удобным в управлении.
Используйте принципы, описанные в статье, чтобы создавать свои шорткоды, адаптированные под конкретные задачи вашего проекта на wpwebsite.ru.