Шорткоды — это мощный инструмент WordPress, который позволяет вставлять динамический контент в записи и страницы без необходимости писать сложный код каждый раз. В этой статье мы подробно разберем, как создать собственный шорткод, расширить его функциональность и использовать в вашем проекте.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальная метка в квадратных скобках, например [gallery], которая при выводе страницы преобразуется в определенный HTML или функционал. Они упрощают работу с контентом и позволяют разработчикам и пользователям добавлять сложные элементы без глубоких знаний программирования.
Создание собственного шорткода дает вам полный контроль над тем, какой контент или функционал будет выводиться, и как он будет настраиваться.
Как зарегистрировать собственный шорткод в WordPress
Для регистрации шорткода нужно использовать функцию add_shortcode(). Она принимает два параметра: название шорткода и функцию-обработчик.
function wp_pro_shortcode_example($atts, $content = null) {
return '<div class="wp-pro-shortcode">Привет, это мой первый шорткод!</div>';
}
add_shortcode('wp_pro_greeting', 'wp_pro_shortcode_example');В этом примере мы создали шорткод [wp_pro_greeting], который выводит простой блок с текстом. Функция-обработчик принимает атрибуты и содержимое между тегами шорткода.
Разбор параметров функции обработчика
Первый параметр $atts — это массив атрибутов, переданных в шорткод, например [wp_pro_greeting user="Вася"]. Второй параметр $content — это содержимое между открывающим и закрывающим тегами шорткода, если он парный.
Как использовать атрибуты в шорткодах для гибкой настройки
Чтобы сделать шорткод более универсальным, можно задать стандартные значения атрибутов и использовать их в функции.
function wp_pro_shortcode_greeting($atts) {
$atts = shortcode_atts(
array(
'user' => 'Гость',
'color' => 'black'
), $atts, 'wp_pro_greeting'
);
return '<div style="color: '.esc_attr($atts['color']).'">Привет, '.esc_html($atts['user']).'!</div>';
}
add_shortcode('wp_pro_greeting', 'wp_pro_shortcode_greeting');Теперь можно вызывать шорткод так: [wp_pro_greeting user="Ирина" color="red"], и он выведет красный приветственный текст с именем пользователя.
Пример сложного шорткода: вывод списка последних записей с параметрами
Рассмотрим пример шорткода, который выводит список последних записей определенной категории и с настраиваемым количеством.
function wp_pro_shortcode_latest_posts($atts) {
$atts = shortcode_atts(array(
'category' => '',
'count' => 5
), $atts, 'wp_pro_latest_posts');
$args = array(
'posts_per_page' => intval($atts['count']),
'category_name' => sanitize_text_field($atts['category'])
);
$query = new WP_Query($args);
if(!$query->have_posts()) {
return '<p>Записи не найдены.</p>';
}
$output = '<ul class="wp-pro-latest-posts">';
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('wp_pro_latest_posts', 'wp_pro_shortcode_latest_posts');Этот шорткод можно использовать так: [wp_pro_latest_posts category="novosti" count="3"]. Он выведет список из трех последних записей категории "новости".
Плагины для работы с шорткодами и расширения функционала
Если вы не хотите писать код вручную, можно использовать плагины, которые облегчают создание и управление шорткодами:
- Shortcodes Ultimate — набор из более чем 50 готовых шорткодов с удобным интерфейсом.
- WP Shortcode by MyThemeShop — простой плагин с базовыми шорткодами для форматирования контента.
- Custom Shortcodes — позволяет создавать свои шорткоды через админку без программирования.
Однако собственный код всегда более гибкий и не нагружает сайт лишними функциями.
Советы по безопасности при создании шорткодов
При работе с шорткодами важно обезопасить сайт. Никогда не выводите пользовательский ввод без фильтрации. Используйте функции esc_html(), esc_attr(), sanitize_text_field() и прочие для очистки данных.
Также избегайте выполнения произвольного PHP-кода из атрибутов, чтобы не допустить уязвимости.
Как подключить шорткод в шаблонах темы
Иногда нужно вывести шорткод не в контенте, а прямо в шаблоне PHP. Для этого используйте функцию do_shortcode():
echo do_shortcode('[wp_pro_greeting user="Алексей" color="green"]');Это позволяет интегрировать шорткоды в любую часть сайта.