Шорткоды — это одна из самых мощных возможностей WordPress, позволяющая вставлять функциональные блоки контента в записи и страницы без необходимости писать сложный код прямо в редакторе. В этой статье мы подробно разберем, как создать свой собственный шорткод, какие есть лучшие практики, и приведем примеры кода для различных задач.
Что такое шорткод в WordPress и зачем он нужен
Шорткод — это специальный тег, заключенный в квадратные скобки, например, [example], который WordPress автоматически заменяет на определенный контент или функционал при отображении страницы. Это позволяет легко вставлять сложные элементы, такие как формы, галереи, кнопки и другие интерактивные блоки, не погружаясь в PHP или HTML.
Для разработчиков шорткоды — отличный способ сделать код повторно используемым и удобным для клиентов, которые не умеют программировать.
Создание простого шорткода: базовый пример
Давайте создадим простой шорткод, который выводит приветственное сообщение. Для этого добавим следующий код в файл functions.php вашей темы или в файл вашего собственного плагина.
function wp_lessons_hello_shortcode() {
return '<p>Привет от wp-lessons.ru!</p>';
}
add_shortcode('wp_lessons_hello', 'wp_lessons_hello_shortcode');Теперь, если на странице вставить [wp_lessons_hello], то пользователи увидят текст «Привет от wp-lessons.ru!».
Обратите внимание, что функция называется с префиксом wp_lessons_, чтобы избежать конфликтов с другими функциями.
Шорткод с параметрами: динамический вывод
Часто нужно, чтобы шорткод принимал параметры, например, имя пользователя, цвет или количество элементов. Рассмотрим пример, где шорткод выводит сообщение с именем, переданным через атрибут.
function wp_lessons_greet_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
), $atts, 'wp_lessons_greet'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на wp-lessons.ru.</p>';
}
add_shortcode('wp_lessons_greet', 'wp_lessons_greet_shortcode');Вызов [wp_lessons_greet name="Иван"] выведет «Привет, Иван! Добро пожаловать на wp-lessons.ru.»
Параметры задаются через функцию shortcode_atts(), которая задает значения по умолчанию и объединяет их с переданными.
Использование шорткодов для вывода сложного HTML и логики
Если нужно вывести более сложный HTML с логикой, лучше формировать содержимое внутри функции и возвращать его. Например, создадим шорткод, который выводит список последних публикаций.
function wp_lessons_latest_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'count' => 5,
), $atts, 'wp_lessons_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('wp_lessons_latest_posts', 'wp_lessons_latest_posts_shortcode');Шорткод [wp_lessons_latest_posts count="3"] выведет список из 3 последних постов с ссылками.
Безопасность и производительность шорткодов
При создании шорткодов важно помнить о безопасности. Никогда не выводите данные без очистки — используйте функции esc_html() для текста и esc_url() для URL.
Также избегайте тяжелых запросов и сложных вычислений в шорткодах, так как они вызываются при каждой загрузке страницы. Лучше кэшировать результаты при необходимости.
Пример кеширования результата шорткода
function wp_lessons_cached_shortcode() {
$cache_key = 'wp_lessons_cached_content';
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
// Генерируем содержание
$content = '<p>Данные, которые можно кешировать.</p>';
set_transient($cache_key, $content, 3600); // кеш на час
return $content;
}
add_shortcode('wp_lessons_cached', 'wp_lessons_cached_shortcode');Таким образом, данные не будут генерироваться заново при каждом вызове шорткода.
Расширенные возможности: вложенные шорткоды и шорткоды с содержимым
Шорткоды могут принимать контент между открывающим и закрывающим тегом.
function wp_lessons_box_shortcode($atts, $content = null) {
return '<div style="border:1px solid #ccc; padding:10px; background:#f9f9f9;">' . do_shortcode($content) . '</div>';
}
add_shortcode('wp_lessons_box', 'wp_lessons_box_shortcode');Использование: [wp_lessons_box]Текст внутри рамки[/wp_lessons_box] выведет текст внутри стилизованного блока.
Также можно вкладывать шорткоды друг в друга — WordPress автоматически обработает вложенные вызовы.
Популярные плагины для работы с шорткодами
Если хочется не писать код самому, можно использовать готовые решения:
- Shortcodes Ultimate — мощный плагин с набором разнообразных шорткодов для оформления контента.
- WP Shortcode — простой и удобный плагин с базовыми шорткодами.
- Custom Content Shortcode — позволяет создавать собственные шорткоды с помощью интерфейса.
Однако, для специфичных задач лучше создавать свои шорткоды, поскольку это гибче и оптимальнее.
Заключение
Создание собственных шорткодов в WordPress — это несложно и очень полезно. Это позволяет расширять функциональность сайта, упрощать работу контент-менеджеров и создавать уникальный функционал под нужды проекта. Следуйте описанным примерам и советам, чтобы делать шорткоды правильно и эффективно.