Что такое shortcode в WordPress и зачем они нужны
Shortcode — это мощный инструмент WordPress, позволяющий вставлять динамический контент в записи, страницы и виджеты с помощью простых текстовых меток, заключенных в квадратные скобки. Они значительно упрощают работу с контентом, избавляя пользователей от необходимости писать сложный HTML или PHP код в редакторе.
Например, вместо длинного кода для вставки галереи или формы можно использовать [gallery] или [contact-form]. Создание собственных shortcode позволяет разработчикам расширить функциональность сайта и сделать контент максимально гибким.
Давайте разберемся, как создать свои shortcode, которые можно использовать в любом месте сайта и которые будут выполнять полезные задачи.
Как зарегистрировать shortcode в WordPress
Для создания shortcode нужно использовать функцию add_shortcode(). Она принимает два параметра: имя shortcode и callback-функцию, которая возвращает HTML-код или другой вывод.
Пример простой функции для shortcode:
function wpto_simple_shortcode() {
return '<p>Это простой шорткод от WPTO!</p>';
}
add_shortcode('wpto_simple', 'wpto_simple_shortcode');Теперь в редакторе можно вставить [wpto_simple], и он выведет указанный HTML. Обратите внимание, что функция должна возвращать, а не выводить текст — это важно для корректной работы.
Передача параметров в shortcode
Shortcode поддерживают атрибуты, которые передаются в callback-функцию в виде массива. Это позволяет делать шорткоды универсальными и настраиваемыми.
Пример с параметрами:
function wpto_greeting_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wpto_greeting'
);
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wpto_greeting', 'wpto_greeting_shortcode');Использование: [wpto_greeting name="Иван"] выведет «Привет, Иван!». Если параметр не указан, выведется «Привет, Гость!».
Примеры полезных shortcode для сайта на WordPress
1. Список последних записей
Этот shortcode выведет список из последних публикаций блога с ссылками, что удобно для вставки в произвольные страницы или виджеты.
function wpto_latest_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5
), $atts, 'wpto_latest_posts');
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
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('wpto_latest_posts', 'wpto_latest_posts_shortcode');Используйте [wpto_latest_posts count="3"] чтобы вывести последние 3 записи.
2. Вывод текущей даты с форматированием
Иногда нужно вставить в текст динамическую дату — это очень просто сделать с помощью шорткода.
function wpto_current_date_shortcode($atts) {
$atts = shortcode_atts(array(
'format' => 'd.m.Y'
), $atts, 'wpto_current_date');
return date_i18n($atts['format']);
}
add_shortcode('wpto_current_date', 'wpto_current_date_shortcode');Пример использования: [wpto_current_date format="j F Y"] выведет дату, например, «12 июня 2024».
Особенности безопасности и производительности при создании shortcode
При работе с shortcode важно помнить о безопасности:
- Всегда экранируйте входящие данные — используйте
esc_html(),esc_attr(),esc_url()и другие функции WordPress. - Не выводите необработанный HTML, чтобы избежать XSS-уязвимостей.
- Избегайте тяжелых запросов в callback-функциях, чтобы не замедлять загрузку страниц.
Для повышения производительности можно кэшировать результаты сложных вычислений с помощью Transients API или внешних механизмов кэширования.
Пример добавления кэширования в shortcode
function wpto_cached_latest_posts_shortcode($atts) {
$atts = shortcode_atts(array('count' => 5), $atts, 'wpto_cached_latest_posts');
$cache_key = 'wpto_latest_posts_' . intval($atts['count']);
$output = get_transient($cache_key);
if (false === $output) {
$query = new WP_Query(array('posts_per_page' => intval($atts['count']), 'post_status' => 'publish'));
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>';
set_transient($cache_key, $output, 3600); // кэш на 1 час
}
return $output;
}
add_shortcode('wpto_cached_latest_posts', 'wpto_cached_latest_posts_shortcode');Этот подход значительно уменьшит нагрузку при частом вызове шорткода.
Полезные плагины для работы с shortcode в WordPress
Если вы хотите расширить возможности шорткодов без программирования, обратите внимание на эти плагины:
- Shortcodes Ultimate — набор готовых шорткодов для кнопок, вкладок, галерей и многого другого.
- WP Shortcode — простой плагин с базовыми шорткодами для форматирования контента.
- Custom Content Shortcode — позволяет создавать сложные условные шорткоды с логикой.
Эти инструменты отлично подходят для пользователей без навыков программирования, но если вы разработчик, лучше создавать кастомные решения под задачи проекта.