Шорткоды в WordPress — это мощный инструмент, который позволяет добавлять динамический контент в записи, страницы и виджеты без необходимости писать сложный HTML или PHP напрямую в редакторе. Если вы хотите расширить функциональность своего сайта и сделать управление контентом более гибким, умение создавать собственные шорткоды будет очень полезным.
Что такое шорткоды в WordPress и зачем они нужны
Шорткод — это простой тег в квадратных скобках, например [wpreset_greeting], который WordPress автоматически заменяет на определённый контент или выполняет определённую функцию. Это позволяет разработчикам инкапсулировать сложную логику и выводить её в любом месте сайта через простой вызов.
Преимущества использования шорткодов:
- Удобство для пользователей, которые не умеют программировать.
- Повышение повторного использования кода и стандартизация вывода.
- Возможность динамического изменения контента в зависимости от параметров шорткода.
Всё это делает шорткоды незаменимым инструментом для кастомизации сайта без внесения изменений в шаблоны.
Основы создания собственного шорткода в WordPress
Для регистрации шорткода используется функция add_shortcode, которая принимает два параметра: имя шорткода и функцию-обработчик, возвращающую HTML или другой контент.
Пример простого шорткода, который выводит приветствие:
function wpreset_greeting_shortcode() {
return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('wpreset_greeting', 'wpreset_greeting_shortcode');Теперь, если добавить в редактор WordPress текст [wpreset_greeting], на сайте появится приветствие.
Передача параметров в шорткод
Одно из ключевых преимуществ шорткодов — возможность принимать параметры. Например, сделаем шорткод с параметром name:
function wpreset_greeting_shortcode($atts) {
$atts = shortcode_atts(array(
'name' => 'Гость',
), $atts, 'wpreset_greeting');
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wpreset_greeting', 'wpreset_greeting_shortcode');Теперь вызов [wpreset_greeting name="Алексей"] отобразит "Привет, Алексей!".
Шорткод с более сложной логикой: вывод последних записей блога
Давайте создадим шорткод, который выведет 5 последних постов с заголовками и ссылками. Такой шорткод полезен для размещения блока новостей или подборки статей в любом месте сайта.
function wpreset_latest_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5,
), $atts, 'wpreset_latest_posts');
$query_args = array(
'posts_per_page' => intval($atts['count']),
'post_status' => 'publish',
);
$query = new WP_Query($query_args);
if (!$query->have_posts()) {
return '<p>Нет доступных записей.</p>';
}
$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('wpreset_latest_posts', 'wpreset_latest_posts_shortcode');Вызов [wpreset_latest_posts count="3"] выведет три последних поста. Если параметр count не указан, по умолчанию будет пять.
Безопасность и очистка вывода
Обращайте внимание на безопасность — используйте функции esc_html, esc_url и прочие фильтры для очистки данных перед выводом. Это защитит от XSS-атак и некорректного вывода.
Использование шорткодов внутри PHP-кода и виджетов
Иногда нужно вставить шорткод не в редактор, а прямо в шаблон или виджет. Для этого используйте функцию do_shortcode:
echo do_shortcode('[wpreset_latest_posts count="4"]');Это позволит вам гибко интегрировать шорткоды в любые части темы или плагина.
Полезные плагины для работы с шорткодами
Если вы не хотите писать шорткоды с нуля, есть плагины, которые расширяют их возможности или добавляют визуальные конструкторы шорткодов:
- Shortcodes Ultimate — огромный набор готовых шорткодов с настройками.
- WP Shortcode by MyThemeShop — простой и удобный плагин для создания базовых шорткодов.
- Custom Content Shortcode — позволяет легко создавать кастомные блоки и выводить их через шорткоды.
Но для уникальных задач и оптимизации лучше создавать свои шорткоды вручную с учетом специфики сайта.
Как отлаживать шорткоды
При разработке шорткодов полезно:
- Использовать
error_logдля вывода отладочной информации. - Проверять возвращаемое значение функции — шорткод должен возвращать, а не выводить контент.
- Тестировать на разных устройствах и в разных редакторах.
Практический пример: шорткод для вывода текущей даты и времени
Иногда нужно отобразить актуальную дату в любом месте сайта. Создадим простой шорткод:
function wpreset_current_datetime_shortcode($atts) {
$atts = shortcode_atts(array(
'format' => 'd.m.Y H:i:s',
), $atts, 'wpreset_current_datetime');
return date($atts['format']);
}
add_shortcode('wpreset_current_datetime', 'wpreset_current_datetime_shortcode');Пример использования: [wpreset_current_datetime format="j F Y, H:i"] выведет дату в формате "1 июня 2024, 14:30".
Заключение
Создание собственных шорткодов — это простой и эффективный способ расширить функциональность WordPress-сайта. Используя данное руководство и примеры, вы сможете внедрять динамические блоки контента, улучшать удобство управления сайтом и создавать уникальные решения под любые задачи.