Шорткоды — это мощный инструмент WordPress, который позволяет вставлять динамический контент в записи, страницы и виджеты с помощью простых коротких тегов. В этой статье мы разберем, как создать собственный шорткод с нуля, как правильно зарегистрировать его и использовать, а также рассмотрим примеры кода, которые можно адаптировать под свои задачи.
Что такое шорткоды в WordPress и зачем они нужны
Шорткод — это специальный тег в квадратных скобках, например [wprus_hello], который WordPress автоматически заменяет на определенный HTML или другой контент при выводе страницы. Это удобный способ внедрять функциональность без необходимости писать PHP-код прямо в редакторе.
С помощью шорткодов можно вставлять формы, галереи, кнопки, или даже сложные динамические блоки — все зависит от вашей фантазии и задач.
Встроенные шорткоды есть у многих плагинов и тем, но иногда нужно создать свой, чтобы реализовать уникальный функционал.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода используется функция add_shortcode. Она принимает два параметра: имя шорткода и функцию-обработчик, которая возвращает HTML.
Рассмотрим минимальный пример, который добавляет шорткод [wprus_hello] и выводит приветствие:
function wprus_hello_shortcode() {
return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('wprus_hello', 'wprus_hello_shortcode');Этот код можно добавить в файл functions.php вашей темы или в отдельный плагин. После этого в любом месте контента, где вы вставите [wprus_hello], появится абзац с текстом.
Параметры шорткода
Шорткод может принимать параметры для управления выводом. Например, добавим параметр name:
function wprus_greeting_shortcode($atts) {
$atts = shortcode_atts(array(
'name' => 'гость',
), $atts, 'wprus_greeting');
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wprus_greeting', 'wprus_greeting_shortcode');Теперь вы можете использовать [wprus_greeting name="Иван"], и шорткод выведет Привет, Иван!
Примеры полезных шорткодов для WordPress
1. Шорткод для кнопки с кастомным URL
Создадим шорткод, который выведет кнопку с текстом и ссылкой, заданными через параметры:
function wprus_button_shortcode($atts) {
$atts = shortcode_atts(array(
'text' => 'Нажми меня',
'url' => '#',
'class' => 'wprus-button',
), $atts, 'wprus_button');
$text = esc_html($atts['text']);
$url = esc_url($atts['url']);
$class = esc_attr($atts['class']);
return '<a href="' . $url . '" class="' . $class . '">' . $text . '</a>';
}
add_shortcode('wprus_button', 'wprus_button_shortcode');Используйте так: [wprus_button text="Перейти" url="https://wprus.ru" class="btn-primary"]
Для стилизации добавьте CSS в тему:
.wprus-button {
display: inline-block;
padding: 10px 20px;
background-color: #0073aa;
color: #fff;
text-decoration: none;
border-radius: 4px;
}
.wprus-button:hover {
background-color: #005177;
}2. Шорткод для вывода последнего поста определенной категории
Этот шорткод выводит заголовок и ссылку на последний опубликованный пост в заданной категории:
function wprus_latest_post_shortcode($atts) {
$atts = shortcode_atts(array(
'category' => '',
), $atts, 'wprus_latest_post');
if (empty($atts['category'])) {
return '<p>Категория не указана.</p>';
}
$query = new WP_Query(array(
'posts_per_page' => 1,
'category_name' => sanitize_text_field($atts['category']),
'post_status' => 'publish',
));
if (!$query->have_posts()) {
return '<p>Посты в категории не найдены.</p>';
}
$query->the_post();
$title = get_the_title();
$link = get_permalink();
wp_reset_postdata();
return '<a href="' . esc_url($link) . '">' . esc_html($title) . '</a>';
}
add_shortcode('wprus_latest_post', 'wprus_latest_post_shortcode');Пример использования: [wprus_latest_post category="novosti"]
Безопасность и оптимизация шорткодов
При создании шорткодов важно:
- Обрабатывать и валидировать входящие параметры — используйте функции
esc_html,esc_url,sanitize_text_fieldи другие. - Не выводить напрямую пользовательский ввод без фильтрации.
- Минимизировать запросы к базе данных — лучше кешировать результаты, если шорткод используется часто.
- Добавлять атрибуты безопасности для HTML, если это необходимо.
Например, если шорткод выводит сложный HTML, можно использовать буферизацию вывода:
function wprus_complex_shortcode() {
ob_start();
?>
<div class="complex-block">
<h3>Заголовок блока</h3>
<p>Описание блока с <strong>HTML</strong> контентом.</p>
</div>
<?php
return ob_get_clean();
}
add_shortcode('wprus_complex', 'wprus_complex_shortcode');Полезные плагины для работы с шорткодами в WordPress
Для управления и расширения функционала шорткодов можно использовать следующие плагины:
- Shortcoder — позволяет создавать свои шорткоды с HTML, JavaScript и PHP без программирования.
- Insert PHP Code Snippet — дает возможность создавать шорткоды с PHP-кодом.
- Shortcodes Ultimate — большой набор готовых шорткодов для самых разных задач.
Эти плагины помогут ускорить разработку и упростить работу с динамическим контентом.
Итоговые рекомендации по созданию шорткодов
Создавая шорткод, придерживайтесь следующих принципов:
- Давайте уникальные и понятные имена, чтобы не было конфликтов с другими плагинами или темами.
- Используйте префиксы, например
wprus_, чтобы обозначить авторство и избежать коллизий. - Обрабатывайте параметры и данные безопасно.
- Документируйте функции и параметры для удобства поддержки.
Собственные шорткоды существенно расширяют возможности WordPress, делают контент гибким и легко управляемым. Освоив их создание, вы сможете быстро внедрять любые динамические элементы на сайт.