Шорткоды — это удобный способ добавлять динамический контент в записи и страницы WordPress без необходимости писать сложный HTML или PHP вручную. В этой статье мы подробно разберем, как создать собственный шорткод, подключить его к сайту и использовать для решения реальных задач. Это особенно полезно, если вы хотите расширить функциональность сайта, не прибегая к тяжелым плагинам.
Что такое шорткоды в WordPress и зачем они нужны
Шорткод — это специальный тег, который вы вставляете в контент, и WordPress заменяет его на нужный вам вывод. Например, [gallery] — стандартный шорткод для вывода галереи изображений. Создавая собственные шорткоды, вы получаете возможность:
- Вставлять повторяющийся функционал без дублирования кода.
- Упрощать редактирование контента для редакторов без технических знаний.
- Добавлять интерактивные элементы, которые невозможно реализовать обычным текстом.
Теперь перейдем к практике и создадим простой шорткод.
Подключение кастомного шорткода в functions.php темы
Для начала создадим простой шорткод, который выводит приветствие с именем пользователя, переданным через атрибут. Добавьте следующий код в файл functions.php вашей активной темы или в отдельный плагин:
function wpzen_greeting_shortcode($atts) {
$atts = shortcode_atts( array(
'name' => 'Гость',
), $atts, 'wpzen_greeting' );
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на сайт.</p>';
}
add_shortcode('wpzen_greeting', 'wpzen_greeting_shortcode');Здесь мы создали функцию wpzen_greeting_shortcode, которая принимает параметры шорткода, подставляет значение атрибута name и возвращает HTML с приветствием. Затем регистрируем шорткод с помощью add_shortcode, где wpzen_greeting — это название шорткода.
Использовать шорткод очень просто — вставьте в запись или страницу:
[wpzen_greeting name="Алексей"]<В результате на сайте вы увидите:
Привет, Алексей! Добро пожаловать на сайт.
Расширение шорткода: добавляем параметры и логику
Чтобы шорткод был полезным, часто нужно добавить больше параметров и внутренней логики. Например, сделаем шорткод, который выводит последние записи определенной категории с возможностью настроить количество:
function wpzen_latest_posts_shortcode($atts) {
$atts = shortcode_atts( array(
'category' => '',
'count' => 5,
), $atts, 'wpzen_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']);
}
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Нет записей для отображения.</p>';
}
$output = '<ul>';
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('wpzen_latest_posts', 'wpzen_latest_posts_shortcode');Теперь можно вставлять шорткод с параметрами, например:
[wpzen_latest_posts category="novosti" count="3"]<Этот шорткод выведет список из трех последних записей категории «новости». Если не указывать параметры, выведет пять последних записей всех категорий.
Полезные плагины для работы с шорткодами в WordPress
Хотя создание собственных шорткодов очень полезно, иногда проще использовать готовые решения или расширения. Вот несколько плагинов, которые помогут эффективно работать с шорткодами:
- Shortcoder — позволяет создавать шорткоды с любым HTML, JavaScript или PHP кодом через админку без правки файлов.
- Shortcodes Ultimate — большой набор готовых шорткодов с визуальным редактором.
- Insert PHP Code Snippet — позволяет создавать шорткоды на базе PHP-кода, которые можно быстро вставлять в контент.
Если вы создаете уникальные функции, рекомендуется все равно регистрировать шорткоды в коде, чтобы иметь полный контроль и избежать излишних плагинов.
Советы по безопасности и производительности при создании шорткодов
При работе с шорткодами важно помнить о безопасности:
- Используйте функции
esc_html(),sanitize_text_field()и подобные для очистки входящих данных. - Избегайте прямого вывода пользовательского ввода без фильтрации.
- Не вставляйте опасный PHP-код через шорткоды без проверки, чтобы не создавать уязвимости.
По производительности:
- Старайтесь минимизировать количество запросов к базе внутри шорткодов.
- Используйте кэширование результатов, если шорткод выводит тяжелый контент.
- По возможности ограничивайте вывод количества элементов и используйте пагинацию.
Пример реализации кэширования в шорткоде wpzen_latest_posts
function wpzen_latest_posts_shortcode($atts) {
$atts = shortcode_atts( array(
'category' => '',
'count' => 5,
), $atts, 'wpzen_latest_posts' );
$cache_key = 'wpzen_latest_posts_' . md5(serialize($atts));
$output = get_transient($cache_key);
if ($output !== false) {
return $output;
}
$args = array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish',
);
if (!empty($atts['category'])) {
$args['category_name'] = sanitize_text_field($atts['category']);
}
$query = new WP_Query($args);
if (!$query->have_posts()) {
return '<p>Нет записей для отображения.</p>';
}
$output = '<ul>';
while ($query->have_posts()) {
$query->the_post();
$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
wp_reset_postdata();
$output .= '</ul>';
set_transient($cache_key, $output, 12 * HOUR_IN_SECONDS);
return $output;
}Такой подход значительно снижает нагрузку на базу при повторных вызовах шорткода.
Выводы по созданию и использованию собственных шорткодов
Создание кастомных шорткодов — мощный инструмент для расширения возможностей WordPress без излишних плагинов и громоздкого кода в контенте. Главное — придерживаться стандартов безопасности, использовать правильную очистку данных и не забывать про производительность.
Экспериментируйте с атрибутами, добавляйте логику и интегрируйте с другими частями сайта — и ваши шорткоды станут незаменимой частью сайта на WordPress.