Шорткоды в WordPress — это мощный инструмент, который позволяет вставлять динамический контент в записи, страницы или виджеты без необходимости писать длинный код каждый раз. В этой статье мы подробно рассмотрим, как создавать собственные шорткоды для вывода различных данных, используя примеры с реальным кодом и рекомендациями по плагинам.
Зачем нужны шорткоды в WordPress: преимущества и сферы применения
Шорткоды помогают сделать контент более гибким и удобным для пользователя. Они позволяют:
- Вставлять динамические данные, например, последние записи, пользовательскую информацию, форму обратной связи и многое другое.
- Сокращать количество повторяющегося кода в редакторе.
- Облегчать поддержку и обновление сайта — при изменении логики в функции шорткода изменения автоматически применяются ко всем местам использования.
Примеры использования шорткодов: вывод таблицы с ценами, вставка галерей, отображение пользовательских полей, кастомных форм и так далее.
Создание простого шорткода: базовый пример вывода текста
Начнем с самого простого примера — шорткода, который выводит фиксированный текст. Для этого добавим функцию в файл functions.php вашей темы или в плагин:
function wpcoder_simple_shortcode() {
return 'Привет, это пример простого шорткода!';
}
add_shortcode('wpcoder_hello', 'wpcoder_simple_shortcode');Теперь, вставив в редактор WordPress шорткод [wpcoder_hello], вы увидите текст «Привет, это пример простого шорткода!».
Объяснение кода
Функция wpcoder_simple_shortcode возвращает строку, которая и выводится вместо шорткода. Хук add_shortcode регистрирует шорткод с именем wpcoder_hello и связывает с функцией, которая обрабатывает вызов.
Шорткод с параметрами: как передавать аргументы
Шорткоды могут принимать параметры для вывода динамичного контента. Например, создадим шорткод, который выводит приветствие с именем пользователя:
function wpcoder_greet_shortcode($atts) {
$attributes = shortcode_atts(array(
'name' => 'Гость'
), $atts);
return 'Привет, ' . esc_html($attributes['name']) . '! Добро пожаловать на наш сайт.';
}
add_shortcode('wpcoder_greet', 'wpcoder_greet_shortcode');Использование: [wpcoder_greet name="Иван"] выведет «Привет, Иван! Добро пожаловать на наш сайт.»
Подробности работы с параметрами
Функция shortcode_atts объединяет переданные параметры с установленными по умолчанию, что позволяет гибко управлять входящими значениями. Функция esc_html защищает от вывода вредоносного кода.
Вывод данных из базы WordPress через шорткод: пример с последними постами
Рассмотрим более сложный пример, где шорткод выводит список последних записей в блоге с ссылками.
function wpcoder_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5
), $atts);
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
if (!$query->have_posts()) {
return 'Нет доступных записей.';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
return $output;
}
add_shortcode('wpcoder_recent_posts', 'wpcoder_recent_posts_shortcode');Пример использования: [wpcoder_recent_posts count="3"] выведет три последних поста.
Разбор запроса WP_Query
Мы создаём объект WP_Query, который вытягивает последние записи по параметрам. Важно не забывать вызывать wp_reset_postdata() после цикла, чтобы не нарушить глобальные данные WordPress.
Полезные плагины для работы с шорткодами и расширения функционала
Для управления и создания шорткодов можно использовать готовые плагины, которые значительно упрощают работу:
- Shortcodes Ultimate — мощный набор шорткодов для самых разных задач, с визуальным редактором.
- Custom Content Shortcode — позволяет создавать шорткоды для вывода кастомного контента без программирования.
- WP Shortcode by MyThemeShop — набор популярных шорткодов с гибкими настройками.
Эти плагины помогут быстро внедрить сложный функционал и сэкономят время на разработку.
Практические советы по безопасности и оптимизации шорткодов
При создании шорткодов важно соблюдать меры безопасности:
- Используйте функции
esc_html(),esc_attr(),wp_kses_post()для очистки данных перед выводом. - Не выполняйте опасные операции напрямую из шорткода без проверки прав пользователя.
- Минимизируйте количество запросов к базе — кешируйте результаты, если это возможно.
Оптимизация помогает избежать замедления сайта и повышает стабильность.
Пример кеширования с использованием Transient API
function wpcoder_cached_recent_posts_shortcode($atts) {
$atts = shortcode_atts(array('count' => 5), $atts);
$cache_key = 'wpcoder_recent_posts_' . intval($atts['count']);
$output = get_transient($cache_key);
if (false === $output) {
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
if (!$query->have_posts()) {
return 'Нет доступных записей.';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
set_transient($cache_key, $output, 12 * HOUR_IN_SECONDS);
}
return $output;
}
add_shortcode('wpcoder_cached_recent_posts', 'wpcoder_cached_recent_posts_shortcode');Этот пример сокращает нагрузку на базу, кэшируя вывод на 12 часов.