Шорткоды — один из самых мощных инструментов WordPress, позволяющий вставлять динамический контент в записи, страницы и даже виджеты. Они упрощают работу с повторяющимися элементами и позволяют быстро внедрять функционал без необходимости писать сложный код каждый раз. В этой статье мы подробно разберём, как создать собственный шорткод в WordPress, рассмотрим примеры и лучшие практики.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег в квадратных скобках, который заменяется на определённый контент или функционал при отображении страницы. Например, стандартный шорткод [gallery] выводит галерею изображений. Создание собственных шорткодов позволяет разработчикам и администраторам сайта добавлять уникальные элементы, такие как формы, кнопки, таблицы или даже сложные динамические блоки, без редактирования шаблонов.
Основные преимущества использования шорткодов:
- Повторное использование кода без дублирования
- Удобство для контент-менеджеров и авторов
- Упрощение внедрения кастомного функционала
Но важно помнить, что шорткоды должны быть написаны качественно и безопасно, чтобы не замедлять сайт и не создавать уязвимости.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и функцию, которая будет вызываться при его использовании.
Рассмотрим базовый пример создания шорткода, который выводит приветствие с именем пользователя:
function wplist_greeting_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wplist_greeting'
);
return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPList.ru.';
}
add_shortcode('wplist_greeting', 'wplist_greeting_shortcode');В этом примере мы создали шорткод [wplist_greeting name="Иван"], который выведет «Привет, Иван! Добро пожаловать на WPList.ru.» Если параметр name не передан, будет использовано значение по умолчанию «Гость».
Обратите внимание на использование функции esc_html() для безопасного вывода данных, что является обязательным при работе с пользовательским вводом.
Использование атрибутов в шорткодах: более сложные примеры
Шорткоды часто требуют передачи параметров для более гибкой настройки вывода. Функция shortcode_atts() помогает задать значения по умолчанию и объединить их с переданными атрибутами.
Например, создадим шорткод, который выводит стилизованный блок с цитатой и указанием автора:
function wplist_quote_shortcode($atts, $content = null) {
$atts = shortcode_atts(
array('author' => 'Неизвестный'),
$atts,
'wplist_quote'
);
$quote = esc_html($content);
$author = esc_html($atts['author']);
return '<blockquote style="border-left: 4px solid #0073aa; padding-left: 10px; margin: 15px 0;">' . $quote . '<footer>— ' . $author . '</footer></blockquote>';
}
add_shortcode('wplist_quote', 'wplist_quote_shortcode');Используйте шорткод так:
[wplist_quote author="Алексей"]Текст цитаты здесь[/wplist_quote]
Это выведет красиво оформленную цитату с автором, что удобно при оформлении статей и отзывов.
Шорткод с подключением внешних скриптов и стилей
Иногда шорткод требует подключения CSS или JavaScript для корректного отображения. Для этого рекомендуем использовать хук wp_enqueue_scripts и функцию wp_enqueue_style или wp_enqueue_script.
Рассмотрим пример шорткода, который выводит кнопку с анимацией, для которой нужен отдельный CSS:
function wplist_enqueue_button_assets() {
wp_enqueue_style('wplist-button-style', get_stylesheet_directory_uri() . '/css/wplist-button.css', array(), '1.0');
}
add_action('wp_enqueue_scripts', 'wplist_enqueue_button_assets');
function wplist_button_shortcode($atts) {
$atts = shortcode_atts(array('text' => 'Нажми меня'), $atts, 'wplist_button');
$text = esc_html($atts['text']);
return '<button class="wplist-animated-button">' . $text . '</button>';
}
add_shortcode('wplist_button', 'wplist_button_shortcode');В файле wplist-button.css можно написать стили с анимацией, например:
.wplist-animated-button {
background-color: #0073aa;
color: #fff;
border: none;
padding: 10px 20px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.wplist-animated-button:hover {
background-color: #005177;
}Шорткод [wplist_button text="Купить"] создаст анимированную кнопку с текстом «Купить».
Как отлаживать и обезопасить шорткоды
При создании шорткодов важно следить за безопасностью и стабильностью сайта. Вот несколько рекомендаций:
- Всегда экранируйте входящие данные с помощью
esc_html(),esc_attr()или подобных функций. - Избегайте выполнения долгих или ресурсоёмких операций внутри шорткода — это может замедлить загрузку страницы.
- Проверяйте наличие необходимых данных и используйте значения по умолчанию.
- Для сложных шорткодов лучше создавать отдельные классы или подключать шаблоны через функцию
locate_template()илиget_template_part().
Для отладки можно временно добавлять логирование в файл через error_log() или использовать плагины для отладки PHP.
Полезные плагины для работы с шорткодами
Если вы хотите расширить возможности шорткодов без написания кода, обратите внимание на следующие плагины:
- Shortcodes Ultimate — богатый набор готовых шорткодов для кнопок, вкладок, галерей и многого другого.
- WP Shortcode by MyThemeShop — простой в использовании плагин с базовыми элементами.
- Custom Content Shortcode — позволяет создавать собственные шорткоды с содержимым без программирования.
Тем не менее, знание базовых принципов создания шорткодов поможет вам гибко настраивать сайт под любые задачи.