В WordPress шорткоды — это мощный инструмент, который позволяет добавлять сложные элементы и функционал в записи и страницы без необходимости писать код каждый раз заново. Если вам нужно регулярно выводить специфический контент или функционал, создание собственного шорткода сэкономит время и сделает работу удобнее.
Что такое шорткод в WordPress и зачем его создавать
Шорткод — это короткая метка в квадратных скобках, например, [gallery], которая WordPress преобразует в HTML или PHP-код во время отображения страницы. Создавая собственный шорткод, вы получаете возможность:
- Вставлять повторяющийся контент без копирования и вставки HTML.
- Добавлять динамический функционал, например, формы, слайдеры, таблицы.
- Упрощать процесс редактирования для контент-менеджеров.
Примером стандартного шорткода является [caption] для подписей под изображениями. Пользовательские шорткоды позволяют выходить за рамки стандартных возможностей.
Как зарегистрировать пользовательский шорткод в WordPress
Для регистрации своего шорткода используется функция add_shortcode(). Рассмотрим на примере создания шорткода [wpteam_hello], который выводит простое приветствие.
function wpteam_hello_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'гость',
), $atts, 'wpteam_hello'
);
return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WP-Team.';
}
add_shortcode('wpteam_hello', 'wpteam_hello_shortcode');Здесь мы создали функцию wpteam_hello_shortcode, которая принимает параметры через массив $atts. Функция возвращает строку с приветствием, подставляя имя из параметров, если оно передано. Если нет — по умолчанию используется «гость».
Чтобы использовать шорткод, вставьте в редактор запись:
[wpteam_hello name="Иван"]В результате на странице выведется: Привет, Иван! Добро пожаловать на WP-Team.
Пояснения к функции shortcode_atts
Эта функция позволяет задать значения по умолчанию для атрибутов шорткода и объединить их с теми, что передал пользователь. Это удобно, чтобы контролировать параметры и избежать ошибок.
Пример более сложного шорткода: вывод списка последних записей с кастомными параметрами
Представим, что нам нужно вывести список последних записей блога с возможностью задать количество и категорию через атрибуты шорткода. Создадим шорткод [wpteam_recent_posts]:
function wpteam_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => '',
), $atts, 'wpteam_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="wpteam-recent-posts">';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
$output .= '</ul>';
wp_reset_postdata();
return $output;
}
add_shortcode('wpteam_recent_posts', 'wpteam_recent_posts_shortcode');Этот шорткод принимает два параметра:
count— количество постов для вывода (по умолчанию 5);category— слаг категории, фильтрующей записи (если не задан — выводятся записи из всех категорий).
Пример использования:
[wpteam_recent_posts count="3" category="wordpress"]<Так вы получите список из 3 последних записей категории «wordpress».
Безопасность и оптимизация пользовательских шорткодов
При создании собственных шорткодов важно соблюдать несколько правил для безопасности и производительности:
- Используйте функции
esc_html(),esc_attr(),sanitize_text_field()для очистки данных, получаемых из параметров. - Не выполняйте тяжелые запросы без необходимости — кешируйте результаты при больших объемах данных.
- Обязательно вызывайте
wp_reset_postdata()после собственных запросов WP_Query, чтобы не нарушить глобальный цикл WordPress. - Для больших шорткодов разбивайте логику на вспомогательные функции для удобства поддержки.
Пример безопасности с экранированием
function wpteam_safe_shortcode($atts) {
$text = isset($atts['text']) ? sanitize_text_field($atts['text']) : 'Без текста';
return '<div class="wpteam-safe">' . esc_html($text) . '</div>';
}
add_shortcode('wpteam_safe', 'wpteam_safe_shortcode');Так вы защитите сайт от XSS-атак и некорректного вывода.
Как подключить шорткод в тему или плагин
Обычно код шорткодов помещают в файл functions.php вашей темы или в отдельный плагин. Если хотите, чтобы шорткод работал даже при смене темы, создайте небольшой плагин:
/*
Plugin Name: WP-Team Shortcodes
Description: Набор пользовательских шорткодов для сайта WP-Team.ru
Version: 1.0
Author: WP-Team
*/
// сюда вставьте функции ваших шорткодов
Активируйте плагин в админке — шорткоды станут доступны в любом месте сайта.
Подведение итогов: зачем и как создавать свои шорткоды
Пользовательские шорткоды — это простой способ расширить функциональность сайта, сделать контент динамичным и удобным для редактирования. Правильная организация кода и внимание к безопасности помогут сделать ваш сайт надежным и удобным для конечных пользователей и редакторов.
Начинайте с простых шорткодов, постепенно усложняя их логику, и вы получите мощный инструмент для автоматизации вывода контента на вашем WordPress-сайте.