Шорткоды — это мощный инструмент WordPress, позволяющий вставлять динамический контент в записи, страницы или виджеты простым текстовым кодом. Если вы хотите расширить функциональность сайта и добавить уникальные элементы без установки громоздких плагинов, создание собственных шорткодов — отличный вариант.
Что такое шорткод WordPress и зачем он нужен
Шорткод — это особая метка в квадратных скобках, например [gallery], которая при выводе страницы заменяется на определённый контент или функциональность. WordPress по умолчанию предлагает множество встроенных шорткодов, а также плагины добавляют свои.
Создавая собственный шорткод, вы можете внедрять в тексты любые элементы — кнопки, формы, вывод данных из базы, интерактивные блоки и многое другое. Это позволяет сделать сайт более динамичным и удобным для пользователей.
Для регистрации шорткода используется функция add_shortcode(), которая связывает имя шорткода с вызываемой функцией.
Пример базового шорткода
Рассмотрим самый простой пример: создадим шорткод, который выводит приветствие.
function wpclass_hello_shortcode() {
return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('hello', 'wpclass_hello_shortcode');Теперь, если на странице вставить [hello], пользователь увидит текст "Привет, это мой первый шорткод!".
Как создавать шорткоды с параметрами
Очень часто нужно, чтобы шорткод принимал параметры для гибкой настройки вывода. Например, мы хотим сделать шорткод [greeting name="Иван"], который будет приветствовать по имени.
Для этого функция обработки шорткода принимает аргументы и массив атрибутов.
function wpclass_greeting_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'greeting'
);
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('greeting', 'wpclass_greeting_shortcode');Теперь можно использовать [greeting name="Алексей"] для персонализированного приветствия.
Шорткоды для сложного функционала: пример с выводом списка последних постов
Давайте создадим более полезный шорткод, который выводит список последних записей блога с параметрами для количества и категории.
function wpclass_latest_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => ''
),
$atts,
'latest_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>';
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('latest_posts', 'wpclass_latest_posts_shortcode');Используйте шорткод так: [latest_posts count="3" category="novosti"]. Вы получите список трёх последних постов из категории «новости».
Советы по безопасности и оптимизации шорткодов
При создании шорткодов важно учитывать безопасность, чтобы избежать XSS-атак и проблем с производительностью.
- Всегда используйте функции экранирования — например,
esc_html()для вывода текста иsanitize_text_field()для обработки входящих параметров. - Избегайте выполнения тяжелых запросов в функции шорткода. При необходимости кэшируйте результаты.
- Не выводите напрямую HTML без обработки, чтобы избежать внедрения вредоносного кода.
- Проверяйте типы данных параметров, например, с помощью
intval()для чисел.
Использование шорткодов в виджетах и шаблонах
По умолчанию шорткоды работают в контенте постов и страниц, но можно разрешить их использование и в виджетах, и в шаблонах тем.
Чтобы включить шорткоды в текстовых виджетах, добавьте в functions.php:
add_filter('widget_text', 'do_shortcode');Для вывода шорткода напрямую в шаблоне используйте функцию do_shortcode():
echo do_shortcode('[hello]');Популярные плагины для расширения возможностей шорткодов
Если вы хотите использовать готовые шорткоды, можно обратить внимание на плагины:
- Shortcodes Ultimate — набор из 50+ шорткодов для кнопок, вкладок, колонок, галерей и многого другого.
- WPBakery Page Builder — визуальный конструктор с большим набором шорткодов и элементов.
- Elementor — конструктор страниц с возможностью создавать собственные виджеты и шорткоды.
Однако для специфичных задач лучше писать собственные шорткоды, как показано выше — это даст полный контроль и оптимальную производительность.
Заключение
Создание собственных шорткодов в WordPress — это простой и гибкий способ добавить уникальный функционал на сайт. С помощью PHP и стандартных функций WordPress вы сможете создавать динамические элементы, которые легко вставлять в контент без сложных плагинов.
Используйте примеры из статьи как отправную точку и экспериментируйте с параметрами, выводом и интеграцией в темы и плагины.