Шорткоды — это мощный инструмент WordPress, который позволяет легко добавлять динамический контент в записи и страницы без необходимости писать сложный код каждый раз. В этой статье мы подробно разберём, как создать собственный шорткод в WordPress, какие бывают виды шорткодов, а также приведём практические примеры с кодом и рекомендациями по безопасности и оптимизации.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это небольшая текстовая метка в квадратных скобках, например [gallery], которая при отображении страницы заменяется на определённый контент или функциональность. Благодаря шорткодам можно легко вставлять сложный контент, такие как галереи, формы, кнопки, таблицы и даже динамические данные.
Главное преимущество собственного шорткода — гибкость. Вы можете создавать уникальные элементы, которые идеально подойдут под задачи вашего сайта, без необходимости использовать громоздкие плагины или писать повторяющийся код.
Как зарегистрировать шорткод в WordPress: базовый пример
Для создания шорткода нужно написать функцию, которая будет возвращать HTML или другой контент, и зарегистрировать её с помощью add_shortcode. Рассмотрим простой пример для домена wptem.ru:
function wptem_show_current_year() {
return date('Y');
}
add_shortcode('wptem_year', 'wptem_show_current_year');Теперь, если вставить в контент страницы [wptem_year], на сайте отобразится текущий год. Это удобный приём для автоматического обновления копирайта, например.
Использование атрибутов в шорткодах: расширяем функциональность
Шорткоды могут принимать параметры, которые позволяют гибко настраивать вывод. Например, создадим шорткод для вывода приветствия с указанием имени пользователя:
function wptem_greeting_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wptem_greeting'
);
return 'Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на wptem.ru.';
}
add_shortcode('wptem_greeting', 'wptem_greeting_shortcode');Использование: [wptem_greeting name="Алексей"]. Такой подход позволяет создавать универсальные шорткоды с параметрами под разные нужды.
Пример сложного шорткода: вывод последних записей с кастомной разметкой
Рассмотрим пример, как реализовать шорткод, который выводит список последних записей блога с заголовками и ссылками:
function wptem_latest_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => '',
),
$atts,
'wptem_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']);
}
$posts = get_posts($args);
if (empty($posts)) {
return '<p>Нет записей для отображения.</p>';
}
$output = '<ul class="wptem-latest-posts">';
foreach ($posts as $post) {
$title = esc_html(get_the_title($post));
$link = esc_url(get_permalink($post));
$output .= "<li><a href=\"$link\">$title</a></li>";
}
$output .= '</ul>';
return $output;
}
add_shortcode('wptem_latest_posts', 'wptem_latest_posts_shortcode');Пример использования: [wptem_latest_posts count="3" category="wordpress"]. Шорткод выведет 3 последних поста из категории «wordpress».
Рекомендации по безопасности при создании шорткодов
При создании шорткодов необходимо обязательно обезопасить вывод, чтобы избежать XSS-уязвимостей и других проблем:
- Используйте функции
esc_html(),esc_attr(),esc_url()для экранирования вывода. - Очистите входящие атрибуты через
sanitize_text_field(),intval()и другие функции валидации. - Не выводите напрямую пользовательские данные без проверки.
Эти простые правила помогут защитить сайт и сохранить стабильность работы шорткодов.
Плагины для создания и управления шорткодами в WordPress
Если вы не хотите писать код самостоятельно, существуют плагины, которые позволяют создавать шорткоды визуально или с минимальным кодингом:
- Shortcoder — позволяет создавать собственные шорткоды с HTML, JavaScript и PHP-фрагментами.
- WP Shortcode by MyThemeShop — набор готовых шорткодов с настройками через визуальный редактор.
- Shortcodes Ultimate — мощный плагин с десятками готовых элементов и возможностью расширения.
Эти инструменты отлично подходят, если вы хотите быстро добавить функциональность без глубокого программирования.
Как правильно подключить шорткод: размещение кода и оптимизация
Для корректной работы шорткоды нужно размещать в файле functions.php активной темы или в собственном плагине. Рекомендуется использовать плагин, чтобы не потерять код при смене темы.
Также полезно оборачивать код функций в проверки, чтобы избежать ошибок:
if (!function_exists('wptem_show_current_year')) {
function wptem_show_current_year() {
return date('Y');
}
add_shortcode('wptem_year', 'wptem_show_current_year');
}Это предотвращает конфликт с другими плагинами или темами, которые могут содержать похожие функции.
Наконец, избегайте тяжелых запросов и сложных вычислений в шорткодах, чтобы не замедлять загрузку страниц. Используйте кэширование и оптимизацию, если шорткод генерирует динамический контент.