Создание собственного шорткода в WordPress с плагином WPKPI

Шорткоды в 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 и задачи.

Комбинируя собственные шорткоды с готовыми решениями, вы получите максимум гибкости и контроля над контентом сайта.

WooCommerce: автоматическое отключение отправки писем по заказам без оплаты
28.06.2026
Как избежать проблем с подключением стилей и скриптов в WordPress
27.01.2026
Как создать подробный отчет по KPI в WordPress
09.01.2026
Как отладить проблемы с отправкой форм в WordPress
01.04.2026
Как добавить динамические фильтры в WordPress на примере категорий и метаполей
18.03.2026