Шорткоды в WordPress — это мощный инструмент для быстрого добавления функционала в записи, страницы и виджеты. Они позволяют внедрять сложные элементы без необходимости писать длинные блоки HTML или PHP-кода каждый раз. В этой статье разберем, как создать свой собственный шорткод с помощью плагина WPKPI и расширить возможности сайта.
Что такое шорткод и зачем он нужен в WordPress
Шорткод — это сокращённый код, который вы вставляете в текстовый редактор WordPress, например, [my_shortcode]. При отображении страницы WordPress заменяет этот тег на заданный функционал. Это удобно для:
- Вставки сложных элементов без знания кода;
- Повторного использования одного и того же блока на разных страницах;
- Упрощения управления контентом.
Например, плагин WPKPI поддерживает шорткоды для отображения различных показателей сайта, но иногда нужно добавить что-то уникальное, не входящее в стандартный набор.
Создание базового шорткода с помощью плагина WPKPI
Для начала создадим простой шорткод, который будет выводить текущую дату и время. Это даст понимание структуры и процесса.
Регистрация шорткода
Добавим следующий код в файл плагина WPKPI или в файл functions.php дочерней темы:
function wpkpi_display_current_datetime() {
return 'Текущие дата и время: ' . date('d.m.Y H:i:s');
}
add_shortcode('wpkpi_datetime', 'wpkpi_display_current_datetime');Здесь мы создали функцию wpkpi_display_current_datetime, которая возвращает строку с текущей датой и временем. Затем зарегистрировали шорткод с именем wpkpi_datetime.
Теперь в любом месте контента можно вставить [wpkpi_datetime], и появится актуальное время.
Расширение шорткода с параметрами
Часто хочется, чтобы шорткод принимал параметры. Например, формат даты можно задавать при вызове.
function wpkpi_display_custom_datetime($atts) {
$atts = shortcode_atts(
array(
'format' => 'd.m.Y H:i:s'
), $atts, 'wpkpi_datetime_custom'
);
return 'Дата и время: ' . date($atts['format']);
}
add_shortcode('wpkpi_datetime_custom', 'wpkpi_display_custom_datetime');Теперь, вызвав [wpkpi_datetime_custom format="Y-m-d"], вы получите дату в формате 2024-06-01. Это делает шорткод гибким под разные задачи.
Применение шорткодов WPKPI для вывода KPI и статистики
Плагин WPKPI часто используется для мониторинга ключевых показателей сайта. Создадим шорткод, который будет выводить число посетителей за последние 7 дней.
Получение данных из базы данных
Предположим, что плагин или тема ведёт статистику посещений в таблице wp_wpkpi_visits с колонками visit_date и user_id. Используем запрос для подсчёта уникальных пользователей за неделю.
function wpkpi_get_visitors_last_week() {
global $wpdb;
$table = $wpdb->prefix . 'wpkpi_visits';
$date_week_ago = date('Y-m-d', strtotime('-7 days'));
$count = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(DISTINCT user_id) FROM $table WHERE visit_date >= %s",
$date_week_ago
));
return 'Уникальных посетителей за последние 7 дней: ' . intval($count);
}
add_shortcode('wpkpi_visitors_week', 'wpkpi_get_visitors_last_week');Теперь вызов [wpkpi_visitors_week] выведет актуальное число посетителей. Такой шорткод полезен для быстрого отображения статистики на странице отчётов.
Обработка ошибок и безопасность
Важно всегда проверять корректность данных и использовать подготовленные выражения, как мы сделали с $wpdb->prepare. Это защищает от SQL-инъекций и других уязвимостей.
Как добавить сложный функционал с помощью шорткодов WPKPI
На базе базовых знаний можно создавать более продвинутые шорткоды, например, формы обратной связи, вывод динамических графиков или фильтров.
Пример: шорткод формы обратной связи
Создадим простой контактный шорткод, который выводит форму и обрабатывает отправку.
function wpkpi_contact_form_shortcode() {
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['wpkpi_contact_nonce'])) {
if (!wp_verify_nonce($_POST['wpkpi_contact_nonce'], 'wpkpi_contact_form')) {
return '<p>Ошибка безопасности. Попробуйте ещё раз.</p>';
}
$name = sanitize_text_field($_POST['wpkpi_name']);
$email = sanitize_email($_POST['wpkpi_email']);
$message = sanitize_textarea_field($_POST['wpkpi_message']);
if (empty($name) || empty($email) || empty($message)) {
return '<p>Пожалуйста, заполните все поля.</p>' . wpkpi_contact_form_html();
}
wp_mail('admin@example.com', 'Новое сообщение с сайта', "Имя: $name\nEmail: $email\nСообщение: $message");
return '<p>Спасибо за ваше сообщение!</p>';
}
return wpkpi_contact_form_html();
}
function wpkpi_contact_form_html() {
ob_start();
?>
<form method="post">
<p><label>Имя:<input type="text" name="wpkpi_name" required></label></p>
<p><label>Email:<input type="email" name="wpkpi_email" required></label></p>
<p><label>Сообщение:<textarea name="wpkpi_message" required></textarea></label></p>
<input type="hidden" name="wpkpi_contact_nonce" value="<?php echo wp_create_nonce('wpkpi_contact_form'); ?>">
<p><input type="submit" value="Отправить"></p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('wpkpi_contact_form', 'wpkpi_contact_form_shortcode');Этот шорткод выводит форму, проверяет nonce для безопасности, обрабатывает отправку и отправляет письмо администратору.
Как использовать
Просто вставьте [wpkpi_contact_form] в любую страницу или запись. Форма появится и будет работать без дополнительной настройки.
Другие полезные плагины для работы с шорткодами в WordPress
Если хотите расширить возможности шорткодов, рекомендую обратить внимание на следующие плагины:
- Shortcodes Ultimate — набор из более 50 готовых шорткодов для разных задач, от кнопок до галерей.
- WP Shortcode by MyThemeShop — простой и удобный плагин с базовыми шорткодами.
- WPKPI — ваш базовый плагин, который можно модифицировать и расширять под собственные KPI и задачи.
Комбинируя собственные шорткоды с готовыми решениями, вы получите максимум гибкости и контроля над контентом сайта.