Шорткоды — это мощный инструмент WordPress, позволяющий вставлять сложные элементы и функциональность в записи и страницы без необходимости писать длинный код каждый раз. В этой статье мы подробно разберём, как создать собственный шорткод в WordPress, рассмотрим практические примеры и покажем, как с их помощью решать реальные задачи.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это специальный тег, который вы можете вставить в текст статьи или страницы WordPress, и он будет автоматически заменён на определённый функционал. Это может быть вывод галереи, формы, таблицы или даже сложные динамические данные.
Преимущества шорткодов:
- Упрощают добавление повторяющегося контента.
- Позволяют избежать ручного копирования сложного HTML или PHP-кода.
- Облегчают управление функционалом для контент-менеджеров без навыков программирования.
Рассмотрим создание собственного шорткода на конкретном примере.
Создание простого шорткода WPAll: вывод текущей даты
Для начала создадим самый простой шорткод, который будет показывать текущую дату в удобном формате.
Добавьте следующий код в файл functions.php вашей темы или в отдельный плагин:
function wpall_current_date_shortcode() {
return date('d.m.Y');
}
add_shortcode('wpall_date', 'wpall_current_date_shortcode');Теперь в любом месте записи или страницы, где вы вставите [wpall_date], появится текущая дата в формате ДД.ММ.ГГГГ.
Это базовый пример, но уже с ним можно создавать динамичный контент.
Шорткод с параметрами: пример с выводом пользовательского приветствия
Шорткоды могут принимать параметры, что значительно расширяет их возможности. Давайте сделаем шорткод, который будет приветствовать пользователя по имени.
function wpall_greeting_shortcode($atts) {
$attributes = shortcode_atts(array(
'name' => 'Гость',
), $atts);
return 'Привет, ' . esc_html($attributes['name']) . '! Добро пожаловать на WPAll.';
}
add_shortcode('wpall_greeting', 'wpall_greeting_shortcode');Теперь вызов [wpall_greeting name="Алексей"] выведет «Привет, Алексей! Добро пожаловать на WPAll.»
Если параметр name не передан, будет использоваться значение по умолчанию — «Гость».
Динамический шорткод с выводом последних записей
Практически часто требуется выводить последние записи блога или определённой категории. Создадим шорткод, который выведет заголовки последних 5 записей с ссылками.
function wpall_latest_posts_shortcode($atts) {
$attributes = shortcode_atts(array(
'count' => 5,
'category' => '',
), $atts);
$args = array(
'posts_per_page' => intval($attributes['count']),
'post_status' => 'publish',
);
if (!empty($attributes['category'])) {
$args['category_name'] = sanitize_text_field($attributes['category']);
}
$posts = get_posts($args);
if (empty($posts)) {
return '<p>Записи не найдены.</p>';
}
$output = '<ul>';
foreach ($posts as $post) {
$output .= '<li><a href="' . esc_url(get_permalink($post)) . '">' . esc_html(get_the_title($post)) . '</a></li>';
}
$output .= '</ul>';
return $output;
}
add_shortcode('wpall_latest_posts', 'wpall_latest_posts_shortcode');Использование:
[wpall_latest_posts]— выведет 5 последних записей.[wpall_latest_posts count="3"]— последние 3 записи.[wpall_latest_posts category="news"]— последние 5 записей из категории «news».
Такой шорткод удобен для создания блоков с новостями или анонсами на страницах.
Работа с плагинами для расширения возможностей шорткодов
Если вы не хотите писать код самостоятельно, можно воспользоваться плагинами, которые позволяют создавать шорткоды визуально или имеют готовые функции.
Рассмотрим два популярных плагина:
1. Shortcodes Ultimate
Очень мощный плагин с набором более 50 готовых шорткодов, от кнопок и таблиц до слайдеров и вкладок. Он отлично подходит для быстрого добавления функционала без программирования.
Плюсы:
- Удобный визуальный интерфейс.
- Поддержка кастомных CSS и JavaScript.
- Большое сообщество и документация.
2. WP Shortcode by MyThemeShop
Простой и лёгкий плагин для добавления базовых элементов — кнопок, блоков, уведомлений и др. Отличный вариант, если нужен минимализм и стабильность.
Расширение шорткодов: добавление кастомной логики и безопасности
При создании шорткодов важно учитывать безопасность и производительность.
Советы:
- Обязательно используйте функции
esc_html(),esc_url()и другие для экранирования данных. - Проверяйте входящие параметры с помощью
shortcode_atts()и функций валидации. - Минимизируйте нагрузку — избегайте сложных запросов в цикле, кэшируйте результаты при необходимости.
Например, добавим кеширование для шорткода последних записей:
function wpall_latest_posts_shortcode_cached($atts) {
$attributes = shortcode_atts(array(
'count' => 5,
'category' => '',
), $atts);
$cache_key = 'wpall_latest_posts_' . md5(serialize($attributes));
$output = get_transient($cache_key);
if ($output !== false) {
return $output;
}
$args = array(
'posts_per_page' => intval($attributes['count']),
'post_status' => 'publish',
);
if (!empty($attributes['category'])) {
$args['category_name'] = sanitize_text_field($attributes['category']);
}
$posts = get_posts($args);
if (empty($posts)) {
return '<p>Записи не найдены.</p>';
}
$output = '<ul>';
foreach ($posts as $post) {
$output .= '<li><a href="' . esc_url(get_permalink($post)) . '">' . esc_html(get_the_title($post)) . '</a></li>';
}
$output .= '</ul>';
set_transient($cache_key, $output, 3600); // Кэш на 1 час
return $output;
}
remove_shortcode('wpall_latest_posts');
add_shortcode('wpall_latest_posts', 'wpall_latest_posts_shortcode_cached');Таким образом, мы снижаем нагрузку на базу данных, особенно если шорткод используется часто.
Итоги: как WPAll поможет создавать свои шорткоды
Создание собственных шорткодов — это универсальный способ расширить функциональность WordPress без избыточных плагинов. Начинайте с простых примеров, как показано выше, и постепенно внедряйте более сложные задачи.
Используйте плагины для ускорения работы, но не забывайте про безопасность и оптимизацию. В итоге вы получите гибкий и удобный инструмент для управления контентом на своем сайте.