В WordPress шорткоды — это мощный инструмент, позволяющий внедрять динамический контент в записи, страницы и виджеты без необходимости писать сложный код каждый раз. В этой статье мы подробно разберем, как создать собственный динамический шорткод, который будет принимать параметры и выводить контент в зависимости от них. Такой подход особенно полезен для разработчиков, которые хотят расширить функциональность сайта, не прибегая к громоздким плагинам.
Что такое динамический шорткод и зачем он нужен
Стандартный шорткод — это простой тег, который заменяется на заранее определенный контент. Динамический же шорткод способен изменять свой вывод в зависимости от переданных параметров, условий или даже данных из базы.
Например, шорткод [wpmarket_product id=123] может выводить информацию о товаре с ID 123, а с другим параметром — данные другого товара. Это экономит время и позволяет централизованно управлять выводом информации.
Динамические шорткоды востребованы для:
- Вывода кастомных данных (например, последние новости, товары, отзывы).
- Создания многоразовых блоков с изменяемым содержимым.
- Интеграции с внешними API и динамическим обновлением информации.
Создаем простой динамический шорткод — пример с выводом приветствия
Начнем с базового примера. Мы создадим шорткод [wpmarket_greeting name="Имя"], который будет приветствовать пользователя по имени.
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpmarket_dynamic_greeting_shortcode($atts) {
// Задаем значения по умолчанию
$atts = shortcode_atts(
array('name' => 'гость'),
$atts,
'wpmarket_greeting'
);
// Формируем вывод
return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на наш сайт.';
}
add_shortcode('wpmarket_greeting', 'wpmarket_dynamic_greeting_shortcode');Теперь в редакторе WordPress вы можете использовать шорткод [wpmarket_greeting name="Алексей"], и на странице выведется: Привет, Алексей! Добро пожаловать на наш сайт.
Расширяем функциональность: динамический вывод списка последних товаров
Предположим, у вас есть пользовательский тип записи product, и вы хотите через шорткод выводить последние товары с возможностью указать количество.
Рассмотрим пример шорткода [wpmarket_latest_products count=3]:
function wpmarket_latest_products_shortcode($atts) {
$atts = shortcode_atts(
array('count' => 5),
$atts,
'wpmarket_latest_products'
);
$args = array(
'post_type' => 'product',
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish',
);
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Товары не найдены.</p>';
}
$output = '<ul class="wpmarket-products-list">';
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('wpmarket_latest_products', 'wpmarket_latest_products_shortcode');Этот шорткод позволит легко выводить последние товары на любой странице, просто меняя параметр count.
Обработка сложных параметров и безопасность
Важно помнить о безопасности при работе с шорткодами. Все входные данные необходимо валидировать и экранировать. В примерах выше мы использовали функцию esc_html() для вывода текста и кастили количество в целое число.
Если ваш шорткод принимает сложные параметры, например, массивы, их лучше передавать через JSON и разбирать внутри функции, но это требует дополнительной обработки и проверки.
Также не забывайте использовать wp_nonce_field и проверки, если шорткод меняет данные.
Примеры полезных плагинов для работы с шорткодами
Для расширения возможностей шорткодов можно использовать готовые плагины:
- Shortcodes Ultimate — один из самых популярных наборов шорткодов с визуальным редактором.
- WP Shortcode by MyThemeShop — простой и легкий плагин с базовым набором шорткодов.
- Custom Content Shortcode — позволяет создавать свои шорткоды с динамическим контентом через интерфейс.
Однако, если нужно что-то специфичное — лучше писать свои шорткоды, как показано выше.
Подведение итогов: рекомендуемые практики при создании динамических шорткодов
При разработке динамических шорткодов стоит придерживаться следующих правил:
- Всегда используйте
shortcode_attsдля обработки параметров. - Валидация и экранирование входных данных обязательна.
- Не выводите напрямую данные из базы без фильтрации.
- Используйте
WP_Queryдля получения записей, а затемwp_reset_postdata()после цикла. - Продумывайте кэширование, если данные сложно генерируются и не меняются часто.
Освоив создание динамических шорткодов, вы существенно расширите возможности вашего сайта на WordPress, сделаете его более гибким и удобным для конечных пользователей.