Шорткоды в WordPress — это мощный инструмент, который позволяет добавлять динамический контент в записи и страницы без необходимости вставлять сложный код вручную. Создание собственных шорткодов расширяет возможности сайта и облегчает добавление уникального функционала.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это простой тег в квадратных скобках, например, [gallery], который WordPress автоматически преобразует в определенный HTML или другой вывод. Это удобный способ вставлять сложный контент, например, галереи, формы, видео и т.д.
Создание собственного шорткода позволяет разработчику создавать уникальные решения под конкретные задачи, улучшая взаимодействие с пользователем и упрощая редактуру контента. Например, вы можете сделать шорткод для отображения последних постов, кастомных форм или интерактивных элементов.
В этой статье мы рассмотрим, как создать шорткод на примере, а также разберем, как передавать параметры и обрабатывать их.
Как зарегистрировать шорткод в WordPress
Для создания шорткода нужно использовать функцию add_shortcode(). Она принимает два параметра: имя шорткода и функцию, которая будет выводить содержимое.
Рассмотрим пример создания простого шорткода, который выводит приветствие с именем пользователя:
function wpbit_hello_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'hello'
);
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('hello', 'wpbit_hello_shortcode');
Теперь в любом месте контента можно использовать [hello name="Иван"], и будет выведено: Привет, Иван!
Если параметр name не передан, по умолчанию будет использовано "Гость".
Передача и обработка параметров в шорткодах
Параметры позволяют настраивать вывод шорткода динамически. В функции обработчике используйте shortcode_atts() для объединения переданных атрибутов с дефолтными значениями. Это гарантирует корректную работу даже если некоторые параметры не заданы.
Например, создадим шорткод для вывода списка последних постов с возможностью указать количество:
function wpbit_recent_posts_shortcode($atts) {
$atts = shortcode_atts(
array('count' => 5),
$atts,
'recent_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('recent_posts', 'wpbit_recent_posts_shortcode');
В контенте можно использовать [recent_posts count="3"], чтобы отобразить 3 последних поста.
Примеры полезных шорткодов для WordPress
Вот несколько идей полезных шорткодов, которые можно создать для расширения функционала сайта:
- Показать текущую дату и время: шорткод, который выводит дату в нужном формате.
- Кнопка с кастомной ссылкой: шорткод, генерирующий кнопку с параметрами цвета и URL.
- Отображение произвольного поля: шорткод для показа мета-данных записи.
- Вставка Google карты: с передачей адреса через параметр.
Пример шорткода кнопки с параметрами:
function wpbit_button_shortcode($atts) {
$atts = shortcode_atts(array(
'url' => '#',
'text' => 'Нажми меня',
'color' => '#0073aa'
), $atts, 'button');
$url = esc_url($atts['url']);
$text = esc_html($atts['text']);
$color = esc_attr($atts['color']);
return '<a href="' . $url . '" style="display:inline-block; padding:10px 20px; background-color:' . $color . '; color:#fff; text-decoration:none; border-radius:4px;">' . $text . '</a>';
}
add_shortcode('button', 'wpbit_button_shortcode');
Используйте [button url="https://wpbit.ru" text="Перейти на WPBit" color="#005f73"] для вывода кнопки.
Лучшие плагины для работы с шорткодами
Если вы не хотите писать код самостоятельно, можно использовать плагины, которые упрощают создание и управление шорткодами:
- Shortcodes Ultimate — набор готовых шорткодов с визуальным редактором.
- Custom Shortcodes — позволяет создавать собственные шорткоды через интерфейс.
- WP Shortcode by MyThemeShop — коллекция полезных шорткодов для контента.
Эти плагины помогут быстро добавить функционал без навыков программирования, но при этом создавать кастомные шорткоды вручную даёт максимальную гибкость и контроль.
Безопасность и производительность при работе с шорткодами
При создании шорткодов важно всегда использовать функции для экранирования вывода, такие как esc_html(), esc_url() и другие. Это предотвращает XSS-уязвимости и обеспечивает безопасность.
Также избегайте тяжелых запросов и сложных вычислений в функциях шорткодов, так как они вызываются при загрузке страницы и могут замедлить сайт. Если необходимо, используйте кэширование результатов.
Для оптимизации можно использовать transient API для кэширования динамического контента, например, списка постов, чтобы уменьшить нагрузку на базу данных.