Шорткоды в WordPress — это мощный инструмент, который позволяет быстро добавлять сложный функционал в записи, страницы и виджеты без необходимости писать HTML или PHP каждый раз заново. В этой статье мы подробно разберем, как создать собственные шорткоды, какие возможности у них есть, и приведем рабочие примеры с кодом.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, например [gallery], который WordPress заменяет на динамически сгенерированный контент при выводе страницы. Это позволяет удобно вставлять в посты, страницы или виджеты интеграции с плагинами, формы, галереи и многое другое без знания программирования.
Создание собственного шорткода полезно, когда стандартных возможностей WordPress или популярных плагинов недостаточно, и нужно реализовать уникальный функционал под конкретный проект.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода используется функция add_shortcode. Она принимает два параметра: имя шорткода и функцию, которая формирует вывод.
Пример базового шорткода:
function wpmake_hello_shortcode($atts) {
return 'Привет, это мой первый шорткод!';
}
add_shortcode('wpmake_hello', 'wpmake_hello_shortcode');Теперь в записи можно вставить [wpmake_hello], и на сайте отобразится текст «Привет, это мой первый шорткод!».
Обработка атрибутов шорткода
Очень часто нужно, чтобы шорткод принимал параметры. Для этого в функцию передается массив атрибутов. Чтобы задать значения по умолчанию, используется функция shortcode_atts.
function wpmake_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
'time' => 'день'
), $atts, 'wpmake_greeting'
);
return 'Добрый ' . esc_html($atts['time']) . ', ' . esc_html($atts['name']) . '!';
}
add_shortcode('wpmake_greeting', 'wpmake_greeting_shortcode');Использование: [wpmake_greeting name="Андрей" time="вечер"] выведет «Добрый вечер, Андрей!».
Пример сложного шорткода: вывод списка последних записей
Рассмотрим пример, как сделать шорткод, который будет выводить список последних записей блога с кастомным оформлением.
function wpmake_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => ''
), $atts, 'wpmake_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 class="wpmake-recent-posts">';
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('wpmake_recent_posts', 'wpmake_recent_posts_shortcode');Пример использования: [wpmake_recent_posts count="3" category="novosti"] выведет 3 последние записи из категории «novosti».
Советы по безопасности и производительности шорткодов
При создании шорткодов важно правильно фильтровать и экранировать все входящие данные. В примерах выше мы использовали esc_html для вывода текста и sanitize_text_field для атрибутов.
Также избегайте тяжелых запросов и сложных вычислений в шорткодах без необходимости — это может замедлить загрузку страниц. Если нужно, кешируйте результат или используйте transient API.
Пример кеширования результата шорткода
function wpmake_cached_content_shortcode() {
$cache_key = 'wpmake_cached_shortcode_output';
$output = get_transient($cache_key);
if ($output === false) {
// Дорогая операция
$output = 'Текущая дата и время: ' . date('Y-m-d H:i:s');
set_transient($cache_key, $output, 3600); // Кеш на 1 час
}
return $output;
}
add_shortcode('wpmake_cached_time', 'wpmake_cached_content_shortcode');Такой подход уменьшит нагрузку на сервер при частых вызовах шорткода.
Рекомендуемые плагины для работы с шорткодами
Если вы хотите расширить возможности шорткодов, обратите внимание на эти плагины:
- Shortcodes Ultimate — большой набор готовых шорткодов для различных целей, с удобным визуальным редактором.
- WP Shortcode by MyThemeShop — простой и легкий плагин с базовыми элементами.
- Custom Content Shortcode — позволяет создавать шорткоды для условного вывода контента.
При этом создание собственных шорткодов, как описано в статье, дает полный контроль и позволяет реализовать любые задачи.