Шорткоды — это мощный инструмент WordPress, позволяющий вставлять динамический контент в записи, страницы и виджеты при помощи простых коротких тегов. Если стандартных шорткодов вам недостаточно, можно создать собственный шорткод, который решит конкретные задачи вашего сайта.
Что такое шорткод в WordPress и зачем создавать свой
Шорткод — это сокращённый тег, который WordPress заменяет на определённый контент при выводе страницы. Например, стандартный шорткод [gallery] выводит галерею изображений. Создавая собственный шорткод, вы можете выводить любой контент или функционал, не редактируя шаблоны напрямую.
Преимущества собственного шорткода:
- Повторное использование кода в разных местах сайта.
- Упрощение работы редакторов и пользователей сайта.
- Гибкость и расширяемость функционала без изменения темы.
Далее рассмотрим, как создать шорткод на примере сайта wp3.ru.
Создание простого шорткода в WordPress: базовый пример
Для начала создадим самый простой шорткод, который выводит приветствие. Добавим следующий код в файл functions.php вашей темы или в файл собственного плагина:
function wp3_hello_shortcode($atts) {
$atts = shortcode_atts(array(
'name' => 'Гость',
), $atts, 'wp3_hello');
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на wp3.ru.</p>';
}
add_shortcode('wp3_hello', 'wp3_hello_shortcode');Объяснение:
shortcode_attsзадаёт атрибуты по умолчанию. В нашем случае этоnameс значением «Гость».- Функция возвращает строку с приветствием, в которую подставляется значение атрибута.
- Функция регистрируется через
add_shortcodeс тегомwp3_hello.
Пример использования в записи или странице:
[wp3_hello name="Алексей"]
Результат: <p>Привет, Алексей! Добро пожаловать на wp3.ru.</p>
Расширение шорткода: добавление логики и параметров
Теперь усложним пример. Сделаем шорткод, который выводит список последних 5 публикаций выбранной категории. Добавим параметр category для указания категории по слагу.
function wp3_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'category' => '',
'count' => 5,
), $atts, 'wp3_recent_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>';
foreach ($posts as $post) {
$title = esc_html(get_the_title($post));
$url = esc_url(get_permalink($post));
$output .= "<li><a href=\"$url\">$title</a></li>";
}
$output .= '</ul>';
return $output;
}
add_shortcode('wp3_recent_posts', 'wp3_recent_posts_shortcode');Использование:
[wp3_recent_posts category="novosti" count="3"]
Выведет три последние опубликованные записи из категории с ярлыком novosti.
Советы по безопасности и производительности шорткодов
При создании шорткодов важно соблюдать несколько правил:
- Санитизация входных данных. Всегда используйте функции
sanitize_text_field,intvalи другие для очистки параметров шорткода. - Экранирование вывода. Для вывода текста применяйте
esc_htmlиesc_urlдля URL, чтобы избежать XSS-уязвимостей. - Минимизируйте нагрузку на базу данных. Кешируйте результаты, если шорткод вызывается часто. Можно использовать Transients API для временного хранения данных.
Пример кеширования с Transients API
function wp3_recent_posts_cached_shortcode($atts) {
$atts = shortcode_atts(array(
'category' => '',
'count' => 5,
), $atts, 'wp3_recent_posts_cached');
$cache_key = 'wp3_recent_posts_' . md5(serialize($atts));
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
// Логика получения постов аналогична предыдущему примеру
$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>';
foreach ($posts as $post) {
$title = esc_html(get_the_title($post));
$url = esc_url(get_permalink($post));
$output .= "<li><a href=\"$url\">$title</a></li>";
}
$output .= '</ul>';
set_transient($cache_key, $output, 3600); // Кеш на 1 час
return $output;
}
add_shortcode('wp3_recent_posts_cached', 'wp3_recent_posts_cached_shortcode');Популярные плагины для работы с шорткодами
Если хотите расширить возможности шорткодов, стоит обратить внимание на следующие плагины:
- Shortcodes Ultimate — набор из более чем 50 готовых шорткодов с визуальным редактором.
- WP Shortcode by MyThemeShop — простой плагин с полезными шорткодами для контента.
- Custom Content Shortcode — позволяет создавать шорткоды для вывода кастомного контента без программирования.
Эти плагины удобны для пользователей, которые не хотят писать код, но нуждаются в расширенном функционале.
Как отладить и протестировать свои шорткоды
Разработка шорткодов требует тестирования и отладки. Вот несколько рекомендаций:
- Используйте функцию
do_shortcodeдля тестирования в темах и плагинах. - Проверяйте вывод на разных страницах и в разных условиях.
- Логируйте ошибки с помощью
error_logили специальных плагинов для отладки. - Тестируйте ввод неправильных и пустых параметров, чтобы шорткод не выводил ошибки.
Пример вызова шорткода из PHP-кода:
echo do_shortcode('[wp3_hello name="Тест"]');Выводы
Создание собственных шорткодов позволяет гибко расширять функционал WordPress без изменения темы и облегчает работу контент-менеджеров. Соблюдая правила безопасности и оптимизации, вы получите мощный инструмент для кастомизации сайта на wp3.ru или любом другом ресурсе.