Шорткоды — одна из самых мощных и удобных возможностей WordPress, позволяющая вставлять динамический контент в страницы и записи без прямого изменения кода темы или плагинов. В этой статье мы подробно разберём, как создать простой шорткод для вывода данных, который можно адаптировать под разные задачи.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это специальный тег в квадратных скобках, который WordPress заменяет на определённый функционал или контент при отображении страницы. Например, [gallery] выводит галерею изображений. Создавая собственные шорткоды, вы делаете сайт более гибким и удобным в управлении.
Основные преимущества использования шорткодов:
- Возможность повторного использования кода в разных местах без дублирования;
- Упрощение работы редакторов и пользователей сайта, не знакомых с программированием;
- Гибкость в выводе динамического контента, например, последних новостей, пользовательских данных и пр.;
- Улучшение структуры темы или плагина за счёт отделения логики от контента.
Создание простого шорткода: базовый пример
Начнём с самого простого — выведем на страницу текущую дату с помощью шорткода. Для этого нужно зарегистрировать функцию-обработчик и связать её с уникальным именем шорткода.
Добавьте следующий код в файл functions.php вашей темы или в файл плагина:
function wpmanager_show_current_date() {
return date('d.m.Y');
}
add_shortcode('wpmanager_current_date', 'wpmanager_show_current_date');Теперь в любом месте контента можно написать [wpmanager_current_date], и WordPress выведет текущую дату в формате День.Месяц.Год.
Объяснение кода
Функция wpmanager_show_current_date возвращает строку с датой. Важно, чтобы функция возвращала, а не выводила данные (т.е. использовала return, а не echo), иначе шорткод не сработает правильно. Затем через add_shortcode регистрируем имя шорткода и связываем его с функцией.
Добавление параметров в шорткод для гибкости
Часто нужно, чтобы шорткод принимал параметры. Например, давайте изменим предыдущий пример так, чтобы можно было задавать формат даты.
function wpmanager_show_date_with_format($atts) {
$atts = shortcode_atts(
array('format' => 'd.m.Y'),
$atts,
'wpmanager_date'
);
return date($atts['format']);
}
add_shortcode('wpmanager_date', 'wpmanager_show_date_with_format');Теперь можно использовать шорткод с параметром format:
[wpmanager_date format="Y-m-d"]
Это выведет дату в формате Год-Месяц-День.
Пояснения
Функция shortcode_atts объединяет переданные параметры с параметрами по умолчанию, что упрощает работу с атрибутами и защищает от ошибок. Таким образом, если параметр format не указан, будет использован формат по умолчанию.
Пример шорткода для вывода последних записей с настройками
Рассмотрим более сложный пример — вывод списка последних записей блога с возможностью указать количество и категорию.
function wpmanager_latest_posts_shortcode($atts) {
$atts = shortcode_atts(
array(
'count' => 5,
'category' => ''
), $atts, 'wpmanager_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>';
}
$output .= '</ul>';
wp_reset_postdata();
return $output;
}
add_shortcode('wpmanager_latest_posts', 'wpmanager_latest_posts_shortcode');Использование:
[wpmanager_latest_posts]— выведет 5 последних записей;[wpmanager_latest_posts count="3"]— выведет 3 последние записи;[wpmanager_latest_posts count="10" category="news"]— выведет 10 последних записей из категории «news».
Разбор кода
Мы создали WP_Query с параметрами из атрибутов шорткода. Перед использованием атрибуты очищаются функцией sanitize_text_field и кастуются к нужным типам для безопасности и корректности. Результат формируется в виде HTML-списка с ссылками на записи.
Советы по безопасности и оптимизации шорткодов
При создании шорткодов важно следовать лучшим практикам:
- Безопасность: всегда фильтруйте и проверяйте входящие данные (атрибуты шорткодов), чтобы избежать XSS и других уязвимостей.
- Возврат вместо вывода: функция шорткода должна возвращать строку, а не выводить её напрямую.
- Оптимизация запросов: избегайте тяжелых и частых запросов к базе, используйте кэширование, если данные не меняются часто.
- Использование префиксов: для избежания конфликтов с другими плагинами и темами используйте уникальные префиксы в названиях функций и шорткодов (например,
wpmanager_).
Популярные плагины для работы с шорткодами
Если вы хотите расширить возможности шорткодов без написания кода, обратите внимание на следующие плагины:
- Shortcodes Ultimate — богатый набор готовых шорткодов с визуальным редактором;
- WP Shortcode by MyThemeShop — простой и легкий плагин с набором полезных шорткодов;
- Custom Content Shortcode — позволяет создавать свои шорткоды с выводом HTML и PHP;
- Code Snippets — удобный плагин для добавления и управления собственными функциями, включая шорткоды, без правки functions.php.
Эти инструменты помогут как новичкам, так и опытным разработчикам быстро создавать и управлять шорткодами.
Заключение
Создание собственных шорткодов — мощный способ расширить функционал WordPress и сделать управление контентом удобнее. Важно понимать базовые принципы их разработки, безопасность и оптимизацию. Используйте приведённые примеры и советы, чтобы создавать гибкие и надёжные шорткоды под свои задачи на сайте.