Шорткоды — это мощный инструмент WordPress, позволяющий вставлять динамический контент в записи, страницы и виджеты без необходимости писать сложный HTML или PHP-код каждый раз. В этой статье мы подробно разберём, как создать собственный шорткод, какие возможности он открывает, и приведём практические примеры с кодом.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, например [gallery], который при выводе страницы заменяется на определённый контент или функциональность. Это удобный способ добавлять повторяющиеся элементы, формы, слайдеры, таблицы и многое другое без дублирования кода.
Преимущества шорткодов:
- Упрощают работу авторов контента;
- Повышают гибкость управления сайтом;
- Позволяют внедрять сложный PHP-код в посты безопасно и структурировано;
- Облегчают поддержку и обновление сайта.
Создание собственного шорткода позволяет адаптировать функционал под конкретные задачи без установки громоздких плагинов.
Как создать простой шорткод в WordPress
Для начала создадим самый простой шорткод, который будет выводить текст. Для этого нужно добавить функцию в файл functions.php вашей темы или лучше в файл вашего пользовательского плагина, чтобы сохранить изменения при обновлении темы.
function wpdevelop_simple_shortcode() {
return 'Привет! Это мой первый шорткод.';
}
add_shortcode('wpdevelop_hello', 'wpdevelop_simple_shortcode');Теперь в редакторе WordPress можно вставить [wpdevelop_hello], и на сайте появится текст: «Привет! Это мой первый шорткод.»
Обратите внимание, что функция и имя шорткода начинаются с префикса wpdevelop_ для избежания конфликтов с другими плагинами.
Шорткод с параметрами: как добавить динамику
Чаще всего шорткоды нужны для вывода разных вариантов контента. Для этого в функцию принимаются параметры.
function wpdevelop_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'гость',
'time' => 'день'
), $atts, 'wpdevelop_greeting'
);
return 'Добрый ' . esc_html($atts['time']) . ', ' . esc_html($atts['name']) . '!';
}
add_shortcode('wpdevelop_greeting', 'wpdevelop_greeting_shortcode');Теперь в записи можно использовать шорткод с параметрами: [wpdevelop_greeting name="Алексей" time="вечер"], и будет вывод: «Добрый вечер, Алексей!»
Важно использовать функцию shortcode_atts для установки значений по умолчанию и esc_html для безопасности вывода.
Создание сложного шорткода с HTML и логикой
Шорткоды могут содержать сложную логику, HTML-разметку и даже взаимодействие с базой данных. Например, сделаем шорткод, который выводит список последних опубликованных записей.
function wpdevelop_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5
), $atts, 'wpdevelop_recent_posts');
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
if (!$query->have_posts()) {
return 'Нет опубликованных записей.';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
return $output;
}
add_shortcode('wpdevelop_recent_posts', 'wpdevelop_recent_posts_shortcode');Вызов шорткода [wpdevelop_recent_posts count="3"] выведет ссылки на 3 последних поста. Такой подход очень полезен для создания блоков с динамическим содержимым на страницах.
Обработка ошибок и безопасность
При работе с пользовательскими данными важно всегда фильтровать и экранировать вывод, чтобы избежать XSS-уязвимостей. В примерах выше мы использовали esc_html и методы WP_Query, которые помогают обезопасить код.
Также полезно проверять правильность параметров и предусматривать вывод сообщений об ошибках, чтобы пользователь понимал, что пошло не так.
Как зарегистрировать шорткод в отдельном плагине
Чтобы не потерять шорткоды при смене темы, лучше создать собственный плагин. Для этого создайте папку wpdevelop-shortcodes в каталоге wp-content/plugins и внутри файл wpdevelop-shortcodes.php со следующим содержанием:
<?php
/**
* Plugin Name: WPDevelop Shortcodes
* Description: Собственные шорткоды для сайта.
* Version: 1.0
* Author: WPDevelop
*/
// Вставьте сюда функции шорткодов из предыдущих примеров
function wpdevelop_simple_shortcode() {
return 'Привет! Это мой первый шорткод.';
}
add_shortcode('wpdevelop_hello', 'wpdevelop_simple_shortcode');
// остальные шорткоды...После активации плагина шорткоды станут доступны на сайте, независимо от темы.
Советы по разработке шорткодов
- Используйте уникальные префиксы для функций и имён шорткодов.
- Документируйте параметры и возможные варианты использования.
- Тестируйте шорткоды на разных типах контента.
- Оптимизируйте запросы к базе данных внутри шорткода.
- По возможности избегайте длинных операций внутри шорткода — лучше вынести их в отдельные функции.
Расширенные возможности: шорткод с вложенными шорткодами и атрибутами
Иногда нужно, чтобы шорткод обрабатывал вложенный контент, например, для создания аккордеонов или табов. Для этого функция шорткода принимает параметр $content.
function wpdevelop_box_shortcode($atts, $content = null) {
$atts = shortcode_atts(array(
'title' => 'Заголовок'
), $atts, 'wpdevelop_box');
return '<div class="wpdevelop-box"><h3>' . esc_html($atts['title']) . '</h3><div class="content">' . do_shortcode($content) . '</div></div>';
}
add_shortcode('wpdevelop_box', 'wpdevelop_box_shortcode');Теперь в редакторе можно писать:
[wpdevelop_box title="Важное сообщение"]
Текст внутри блока. Можно использовать другие шорткоды: [wpdevelop_hello]
[/wpdevelop_box]Этот приём позволяет строить сложные структуры из шорткодов.
Популярные плагины для работы с шорткодами
Хотя создавать свои шорткоды полезно, иногда удобнее использовать готовые решения:
- Shortcodes Ultimate — огромный набор визуальных шорткодов с настройками.
- WP Shortcode by MyThemeShop — простой плагин с базовыми элементами.
- Custom Content Shortcode — позволяет создавать шорткоды для повторяющегося контента.
Если нужно добавить функциональность без программирования, эти плагины станут отличным выбором.
Итоги: как использовать шорткоды эффективно
Шорткоды — это универсальный инструмент для расширения возможностей WordPress. Создавая собственные шорткоды, вы получаете:
- Гибкость и контроль над выводом контента;
- Удобство для авторов сайта;
- Возможность быстро обновлять функционал без изменения основного кода;
- Чистый и безопасный код с правильной обработкой данных.
Не забывайте документировать созданные шорткоды, чтобы команда или клиенты могли быстро их применять.