Шорткоды — это мощный инструмент WordPress, который позволяет вставлять динамический контент в записи, страницы и виджеты, используя простые теги в квадратных скобках. В этой статье мы подробно разберем, как создать собственный шорткод, который будет выполнять нужные вам функции, а также рассмотрим примеры реализации и лучшие практики.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это сокращенный код, который пользователь вводит в редакторе WordPress, а WordPress заменяет его на определенный контент при выводе страницы. Например, стандартный шорткод [gallery] выводит галерею изображений. Создание собственного шорткода позволяет расширить функционал сайта без необходимости менять шаблоны и плагины.
С помощью шорткодов можно добавлять формы, кастомные блоки контента, динамические данные и многое другое. Это особенно полезно для сайтов с большим объемом контента, где нужно быстро и удобно вставлять повторяющиеся элементы.
В основе шорткода лежит PHP-функция, которая обрабатывает атрибуты шорткода и возвращает HTML или другой контент для вывода.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и имя функции-обработчика, которая возвращает контент. Рассмотрим простой пример от wplike:
function wplike_shortcode_hello($atts) {
return '<p>Привет от wplike!</p>';
}
add_shortcode('wplike_hello', 'wplike_shortcode_hello');После добавления этого кода в файл functions.php вашей темы или в отдельный плагин, вы можете использовать шорткод [wplike_hello] в редакторе WordPress, и он выведет строку «Привет от wplike!».
Обратите внимание, что функция должна возвращать контент, а не выводить его напрямую через echo. Это важно для корректной работы шорткода в разных местах.
Обработка атрибутов шорткода
Шорткод может принимать параметры (атрибуты), которые передаются в функцию в виде массива. Это позволяет создавать универсальные и гибкие шорткоды.
Пример обработки атрибутов с умолчаниями:
function wplike_shortcode_button($atts) {
$atts = shortcode_atts(
array(
'text' => 'Нажми меня',
'url' => '#',
'color' => '#0073aa'
), $atts, 'wplike_button'
);
return '<a href="'.esc_url($atts['url']).'" style="display:inline-block;padding:10px 20px;background:'.esc_attr($atts['color']).';color:#fff;text-decoration:none;border-radius:4px;">'.esc_html($atts['text']).'</a>';
}
add_shortcode('wplike_button', 'wplike_shortcode_button');Теперь шорткод [wplike_button text="Купить" url="https://wplike.ru" color="#e74c3c"] выведет кнопку с заданным текстом, ссылкой и цветом.
Примеры полезных кастомных шорткодов
Шорткод для вывода текущей даты
Иногда нужно вставить в контент дату, которая обновляется автоматически. Создадим простой шорткод:
function wplike_shortcode_date($atts) {
$atts = shortcode_atts(array(
'format' => 'd.m.Y'
), $atts, 'wplike_date');
return date($atts['format']);
}
add_shortcode('wplike_date', 'wplike_shortcode_date');Использование: [wplike_date format="j F Y"] выведет дату в формате «1 июня 2024».
Шорткод для вывода последних записей блога
Выведем список последних 5 записей с ссылками, используя WP_Query:
function wplike_shortcode_latest_posts($atts) {
$atts = shortcode_atts(array(
'count' => 5
), $atts, 'wplike_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('wplike_latest_posts', 'wplike_shortcode_latest_posts');Шорткод: [wplike_latest_posts count="3"] вставит список из 3 последних публикаций.
Советы по безопасности и оптимизации шорткодов
При создании шорткодов важно учитывать безопасность. Всегда используйте функции esc_html(), esc_url() и другие для очистки входящих данных и вывода. Это предотвратит XSS-уязвимости.
Также лучше избегать тяжелых запросов внутри шорткода, чтобы не замедлять загрузку страниц. Если нужно вывести сложный контент, подумайте о кэшировании результатов.
Не используйте echo внутри функций шорткодов, только return. Это гарантирует правильную вставку контента в любой части сайта.
Обзор плагинов для расширения шорткодов
Если не хотите писать шорткоды вручную, можно воспользоваться плагинами, которые добавляют полезные шорткоды или позволяют создавать свои через интерфейс:
- Shortcodes Ultimate — один из самых популярных плагинов с набором готовых шорткодов для кнопок, вкладок, галерей и т.д.
- WP Shortcode by MyThemeShop — простой плагин с базовыми шорткодами и удобным редактором.
- Custom Content Shortcode — позволяет создавать собственные шорткоды с произвольным HTML и PHP-кодом.
Использование таких плагинов упрощает работу с контентом, особенно если вы не хотите или не умеете писать PHP-код.
Как добавить шорткод в виджеты и шаблоны темы
По умолчанию шорткоды работают в содержимом записей и страниц. Чтобы использовать их в текстовых виджетах, нужно добавить следующий код в functions.php:
add_filter('widget_text', 'do_shortcode');Для вывода шорткода в шаблонах темы используйте функцию do_shortcode():
echo do_shortcode('[wplike_hello]');Это позволяет вставлять динамический контент в любые части шаблона, например, в футер или sidebar.