Шорткоды в WordPress — это мощный инструмент для добавления динамического контента в записи, страницы и виджеты без необходимости писать много кода прямо в редакторе. В этой статье мы разберём, как создать собственный шорткод, который можно адаптировать под свои задачи, а также рассмотрим примеры использования и лучшие практики.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, который WordPress интерпретирует и заменяет на определённый контент или функциональность. Например, стандартный шорткод [gallery] выводит галерею изображений. Но часто стандартных возможностей недостаточно, и требуется создать свой собственный шорткод.
Преимущества использования шорткодов:
- Удобство вставки сложного контента без HTML.
- Повторное использование функционала в разных местах сайта.
- Упрощение работы контент-редакторов.
Давайте перейдём к практике и напишем простой шорткод, который выводит приветствие с именем пользователя.
Создание простого шорткода: пример с приветствием
Для регистрации шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и callback-функцию, которая возвращает HTML или текст для вывода. Код лучше размещать в файле functions.php вашей темы или в отдельном плагине.
function wptalk_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
), $atts, 'wptalk_greeting');
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на наш сайт.</p>';
}
add_shortcode('wptalk_greeting', 'wptalk_greeting_shortcode');Объяснение:
shortcode_atts()— функция для обработки атрибутов шорткода с установкой значений по умолчанию.esc_html()— экранирование вывода для безопасности.- Шорткод регистрируется с именем
wptalk_greeting.
Теперь в редакторе вы можете написать [wptalk_greeting name="Андрей"] и получить: Привет, Андрей! Добро пожаловать на наш сайт.
Добавляем сложную логику: шорткод для вывода последних записей
Рассмотрим более сложный пример — шорткод, который выводит список последних записей с возможностью указать количество и категорию.
function wptalk_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => '',
), $atts, 'wptalk_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']);
}
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Нет записей для отображения.</p>';
}
$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('wptalk_recent_posts', 'wptalk_recent_posts_shortcode');Этот шорткод можно использовать так: [wptalk_recent_posts count="3" category="novosti"]. Он выведет 3 последних записи из категории «novosti».
Работа с параметрами и безопасностью в шорткодах WordPress
При работе с шорткодами важно тщательно обрабатывать входящие данные, чтобы избежать XSS и других уязвимостей. Для этого используйте функции санитизации и экранирования:
sanitize_text_field()— для очистки текстовых данных.esc_html()— для безопасного вывода в HTML.intval()— для целочисленных значений.
Также избегайте прямого вывода данных внутри callback-функции, лучше возвращайте результаты в строковом формате.
Расширение шорткодов: вложенные шорткоды и кеширование
Иногда нужно, чтобы в выводе одного шорткода был другой. WordPress поддерживает вложенность шорткодов с помощью функции do_shortcode(). Например:
function wptalk_nested_shortcode() {
return 'Вложенный шорткод: ' . do_shortcode('[wptalk_greeting name="Юзер"]');
}
add_shortcode('wptalk_nested', 'wptalk_nested_shortcode');Также, если шорткод делает тяжелые запросы, можно реализовать кеширование результата с помощью Transients API, чтобы снизить нагрузку.
Популярные плагины для работы с шорткодами
Если вы не хотите писать код самостоятельно, можно использовать готовые решения:
- Shortcodes Ultimate — набор из более 50 шорткодов для разных задач (таблицы, кнопки, галереи).
- WP Shortcode — простой плагин с базовыми элементами для добавления контента.
- Custom Content Shortcode — для создания своих шорткодов через интерфейс.
Однако, для специфических задач лучше писать свои шорткоды, чтобы избежать лишнего кода и повысить производительность.
Выводы и рекомендации по созданию шорткодов в WordPress
Создание собственных шорткодов позволяет гибко расширять функциональность сайта, делая работу с контентом проще и удобнее. Важно следовать стандартам безопасности, использовать правильные методы обработки входящих данных и оптимизировать код для производительности.
Экспериментируйте с разными параметрами, комбинируйте шорткоды, и вы сможете создавать сложные и полезные элементы для вашего сайта на WordPress.