Шорткоды — это мощный инструмент WordPress, который позволяет легко вставлять динамический контент в записи, страницы или виджеты. В этой статье мы подробно разберём, как создать собственный шорткод, какие возможности он предоставляет и как применять его на практике.
Что такое шорткоды и зачем они нужны в WordPress
Шорткод — это специальный тег в квадратных скобках, например [my_shortcode], который WordPress заменяет на определённый HTML, скрипт или любой другой контент. Это позволяет не писать каждый раз сложный код, а просто использовать удобный тег.
Пример стандартного шорткода — галерея [gallery], которая выводит изображения. Но что если нужно вывести что-то своё? Тогда создаём кастомный шорткод.
Преимущества кастомных шорткодов:
- Упрощают вставку повторяющегося контента.
- Дают возможность добавлять динамический функционал без изменения шаблонов.
- Легко делиться и использовать в разных местах сайта.
Создание базового шорткода в WordPress
Для создания шорткода нужно использовать функцию add_shortcode(). Рассмотрим простой пример — шорткод, который выводит приветствие.
function wpelement_hello_shortcode() {
return '<p>Привет, это мой кастомный шорткод!</p>';
}
add_shortcode('wpelement_hello', 'wpelement_hello_shortcode');Добавляем этот код в файл functions.php вашей темы или в отдельный плагин. После этого в любом месте сайта можно вставить [wpelement_hello] и увидеть приветствие.
Обратите внимание, что функция возвращает строку, а не выводит её напрямую. Это важный момент, иначе шорткод может работать некорректно.
Передача параметров в шорткод
Шорткоды поддерживают атрибуты — параметры, которые можно передать для изменения вывода. Расширим наш пример:
function wpelement_hello_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wpelement_hello'
);
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}Теперь можно писать [wpelement_hello name="Иван"], и шорткод выведет «Привет, Иван!».
Создание шорткода с динамическим выводом из базы данных
Практическое применение — вывод последних новостей или постов. Создадим шорткод, который выводит список из 5 последних постов.
function wpelement_latest_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5
), $atts, 'wpelement_latest_posts');
$query = new WP_Query(array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish'
));
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('wpelement_latest_posts', 'wpelement_latest_posts_shortcode');Такой шорткод позволит вставлять список постов с количеством, задаваемым параметром: [wpelement_latest_posts count="3"].
Оптимизация и безопасность шорткодов
Важно использовать функции экранирования, например esc_html() или esc_url(), чтобы избежать XSS-уязвимостей. В примерах выше это учтено.
Также рекомендуется проверять входные параметры и использовать типизацию, чтобы не допустить ошибок.
Популярные плагины для работы с шорткодами
Если хочется расширить возможности без написания собственного кода, обратите внимание на следующие плагины:
- Shortcodes Ultimate — большой набор готовых шорткодов с удобным интерфейсом.
- WP Shortcode by MyThemeShop — простой и легкий плагин с базовыми шорткодами.
- Custom Content Shortcode — позволяет создавать шорткоды для вывода произвольного контента.
Но если вам нужен именно кастомный функционал, лучше написать свой шорткод, как показано выше.
Использование шорткодов в шаблонах темы
Иногда нужно вывести шорткод не в контенте, а прямо в PHP-файлах темы. Для этого используйте функцию do_shortcode():
echo do_shortcode('[wpelement_latest_posts count="4"]');Это даст вам гибкость в размещении динамического контента.
Советы по отладке шорткодов
Если шорткод не работает, проверьте:
- Правильно ли подключён код — в functions.php или плагине.
- Не конфликтует ли имя шорткода с другими.
- Используйте
error_log()или WP_DEBUG для поиска ошибок.
Также полезно тестировать шорткод на пустом сайте с дефолтной темой.