Шорткоды — мощный инструмент WordPress, который позволяет вставлять динамический контент в записи, страницы и виджеты с помощью простой текстовой метки. Создание собственного шорткода помогает расширить функциональность сайта без сложного редактирования шаблонов. В этой статье подробно разберём, как создать шорткод в WordPress с примерами кода и полезными советами.
Что такое шорткод и зачем он нужен
Шорткод — это короткая строка, заключённая в квадратные скобки, например [my_shortcode], которая при выводе на странице заменяется на определённый функционал или контент. Это может быть форма, галерея, кнопка, вывод данных из базы и многое другое.
Основные преимущества шорткодов:
- Удобство вставки сложного функционала без знаний программирования.
- Повторное использование кода в разных местах сайта.
- Гибкость и расширяемость благодаря параметрам шорткодов.
Для разработчика создание собственного шорткода — это способ быстро и чисто внедрять новые функции без изменения темы или плагинов.
Как создать простой шорткод в WordPress
Создание шорткода начинается с написания PHP-функции, которая генерирует нужный вывод, и регистрации этой функции с помощью функции WordPress add_shortcode().
Рассмотрим пример — создадим шорткод [wplang_hello], который выводит приветствие.
function wplang_hello_shortcode() {
return '<p>Привет, это шорткод от wplang.ru!</p>';
}
add_shortcode('wplang_hello', 'wplang_hello_shortcode');Чтобы использовать этот шорткод, достаточно вставить [wplang_hello] в текст записи или страницы. На фронтенде появится текст «Привет, это шорткод от wplang.ru!».
Такой подход можно расширять, добавляя параметры и логику.
Добавление параметров к шорткоду
Часто нужно передавать параметры, чтобы шорткод был универсальным. Например, добавим параметр name, который позволит персонализировать приветствие.
function wplang_hello_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wplang_hello'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Это шорткод от wplang.ru.</p>';
}
add_shortcode('wplang_hello', 'wplang_hello_shortcode');Теперь при вставке [wplang_hello name="Алексей"] вывод будет: Привет, Алексей! Это шорткод от wplang.ru.
Использование shortcode_atts гарантирует безопасное и удобное получение параметров с дефолтными значениями.
Пример сложного шорткода: вывод последних записей с миниатюрами
Частая задача — вывести список последних записей блога в любом месте сайта. Сделаем шорткод [wplang_recent_posts count="5"], который будет показывать последние count записей с их миниатюрами и ссылками.
function wplang_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 3
), $atts, 'wplang_recent_posts');
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
if (!$query->have_posts()) {
return '<p>Записей не найдено.</p>';
}
$output = '<ul class="wplang-recent-posts">';
while ($query->have_posts()) {
$query->the_post();
$thumb = get_the_post_thumbnail(get_the_ID(), 'thumbnail');
$title = get_the_title();
$permalink = get_permalink();
$output .= '<li><a href="' . esc_url($permalink) . '">' . $thumb . esc_html($title) . '</a></li>';
}
$output .= '</ul>';
wp_reset_postdata();
return $output;
}
add_shortcode('wplang_recent_posts', 'wplang_recent_posts_shortcode');Используя этот шорткод, вы можете легко вставить динамический список постов в любую страницу, например: [wplang_recent_posts count="5"].
Советы по безопасности и оптимизации шорткодов
Экранирование вывода
Обязательно используйте функции esc_html(), esc_url() и аналогичные для очистки данных перед выводом. Это защитит сайт от XSS атак и неправильного отображения.
Минимизация нагрузки
Шорткоды, делающие запросы к базе, могут замедлить загрузку страницы. Используйте wp_cache или transient API для кеширования результатов, если данные меняются нечасто.
Отладка и тестирование
Всегда тестируйте шорткоды с разными параметрами. Используйте инструменты отладки WordPress, чтобы отслеживать ошибки и предупреждения.
Популярные плагины для расширения шорткодов
Если не хочется писать шорткоды вручную, можно воспользоваться плагинами, которые позволяют создавать или использовать готовые шорткоды:
- Shortcodes Ultimate — мощный набор из 50+ шорткодов для разных целей: кнопки, галереи, вкладки, слайдеры.
- WP Shortcode by MyThemeShop — лёгкий плагин с набором базовых шорткодов.
- Custom Content Shortcode — позволяет создавать собственные шорткоды с HTML и PHP без программирования.
Использование плагинов удобно, но собственные шорткоды дают полный контроль и не зависят от сторонних разработчиков.