Как создать свой плагин WordPress: пошаговое руководство

Создание собственного плагина для WordPress — это отличный способ добавить уникальный функционал на сайт, не полагаясь на сторонние решения. В этой статье мы подробно разберём, как создать простой и безопасный плагин с нуля, рассмотрим структуру, основные хуки и лучшие практики. Всё изложено понятным языком и с примерами кода, чтобы вы могли сразу начать разработку.

Почему стоит создавать собственный плагин WordPress

Часто готовые плагины не совсем подходят под задачи проекта: они могут быть слишком нагружены функциями, медленно работать или иметь лишний код. Создавая свой плагин, вы получаете полный контроль над функционалом, улучшаете производительность и безопасность сайта. Кроме того, это полезный навык для любого разработчика, работающего с WordPress.

Создание плагина также позволяет:

  • Интегрировать уникальные функции, которые отсутствуют в репозитории WordPress.
  • Изучить внутренние механизмы WordPress и его API.
  • Обеспечить совместимость с вашей темой и другими плагинами.

Структура плагина WordPress: с чего начать

Минимальный плагин — это один PHP-файл с обязательным заголовком, который WordPress распознаёт как плагин. Для примера создадим плагин с именем WPReg Custom Plugin.

Создайте папку wpreg-custom-plugin в директории /wp-content/plugins/ и внутри неё файл wpreg-custom-plugin.php со следующим содержимым:

<?php
/*
Plugin Name: WPReg Custom Plugin
Plugin URI: https://wpreg.ru/
Description: Пример простого плагина для демонстрации структуры.
Version: 1.0
Author: WPReg
Author URI: https://wpreg.ru/
License: GPL2
*/

// Защита от прямого доступа
if (!defined('ABSPATH')) {
    exit;
}

// Основная функция плагина
function wpreg_custom_plugin_init() {
    // Код инициализации
}
add_action('init', 'wpreg_custom_plugin_init');

Обратите внимание на защиту от прямого вызова файла: if (!defined('ABSPATH')) { exit; } — это обязательная практика безопасности.

Обязательный заголовок плагина

Первым в файле должен идти комментарий с метаданными. WordPress использует их для отображения плагина в админке. Поля Plugin Name, Description, Version и Author обязательны для удобства.

Подключение функций и хуков

Основной код плагина размещаем в функциях и подключаем их к нужным хукам WordPress. В примере выше мы подключаем функцию wpreg_custom_plugin_init к хуку init, который вызывается при загрузке WordPress.

Добавление функционала: пример создания шорткода

Шорткоды — простой способ вывести динамический контент в постах и страницах. Добавим в наш плагин шорткод, который выводит текущую дату и приветствие.

function wpreg_custom_plugin_shortcode() {
    $date = date('d.m.Y');
    return '<p>Сегодня ' . $date . '. Привет от WPReg!</p>';
}
add_shortcode('wpreg_greeting', 'wpreg_custom_plugin_shortcode');

Теперь, если в любом месте контента вставить [wpreg_greeting], он заменится на текст с датой и приветствием.

Расширяем шорткод параметрами

Чтобы сделать шорткод гибче, можно добавить параметры. Например, цвет текста:

function wpreg_custom_plugin_shortcode($atts) {
    $atts = shortcode_atts(array(
        'color' => 'black'
    ), $atts, 'wpreg_greeting');

    $date = date('d.m.Y');
    return '<p style="color:' . esc_attr($atts['color']) . '">Сегодня ' . $date . '. Привет от WPReg!</p>';
}
add_shortcode('wpreg_greeting', 'wpreg_custom_plugin_shortcode');

Теперь в контенте можно писать [wpreg_greeting color="red"], чтобы получить красный текст.

Добавление страницы настроек плагина в админку WordPress

Чтобы дать пользователям возможность менять параметры плагина, создадим страницу настроек. Для этого используем хук admin_menu и функцию add_options_page.

function wpreg_custom_plugin_menu() {
    add_options_page(
        'Настройки WPReg Custom Plugin',
        'WPReg Plugin',
        'manage_options',
        'wpreg-custom-plugin',
        'wpreg_custom_plugin_settings_page'
    );
}
add_action('admin_menu', 'wpreg_custom_plugin_menu');

function wpreg_custom_plugin_settings_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Доступ запрещён');
    }

    // Обработка сохранения настроек
    if (isset($_POST['wpreg_custom_plugin_color'])) {
        check_admin_referer('wpreg_custom_plugin_save_settings');
        update_option('wpreg_custom_plugin_color', sanitize_text_field($_POST['wpreg_custom_plugin_color']));
        echo '<div class="updated"><p>Настройки сохранены.</p></div>';
    }

    $color = get_option('wpreg_custom_plugin_color', 'black');
    ?>
    <div class="wrap">
        <h1>Настройки WPReg Custom Plugin</h1>
        <form method="post" action="">
            <?php wp_nonce_field('wpreg_custom_plugin_save_settings'); ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Цвет текста шорткода</th>
                    <td><input type="text" name="wpreg_custom_plugin_color" value="<?php echo esc_attr($color); ?>" /></td>
                </tr>
            </table>
            <input type="submit" class="button-primary" value="Сохранить" />
        </form>
    </div>
    <?php
}

В этом примере мы создали простую страницу с одним полем для настройки цвета текста шорткода. Значение сохраняется в базу данных через функцию update_option.

Безопасность и проверка прав

Обязательно проверяйте права пользователя с помощью current_user_can и используйте check_admin_referer для защиты от CSRF. Это стандартные меры безопасности при работе с формами в админке.

Локализация плагина для поддержки разных языков

Чтобы плагин был понятен на разных языках, используйте функции локализации: __() и _e(). Например, изменим заголовок страницы настроек:

function wpreg_custom_plugin_settings_page() {
    // ...
    ?>
    <div class="wrap">
        <h1><?php _e('Настройки WPReg Custom Plugin', 'wpreg-custom-plugin'); ?></h1>
        <form method="post" action="">
        <!-- форма -->
        </form>
    </div>
    <?php
}

Для этого создайте файл перевода wpreg-custom-plugin.pot и используйте стандартные инструменты WordPress для генерации .po и .mo файлов.

Рекомендации по разработке и отладке плагинов

При разработке плагина учитывайте следующие моменты:

  • Используйте префиксы для функций и переменных, например wpreg_, чтобы избежать конфликтов.
  • Используйте возможности хуков WordPress для расширения функционала без прямого изменения ядра.
  • Тестируйте плагин на разных версиях WordPress и с разными темами.
  • Включайте режим отладки WordPress для выявления ошибок (define('WP_DEBUG', true); в wp-config.php).
  • Документируйте код и добавляйте комментарии, чтобы облегчить поддержку.

Вот пример функции с префиксом:

function wpreg_custom_plugin_get_data() {
    // код получения данных
}

Заключение

Создание собственного плагина WordPress — вполне достижимая задача, если следовать описанной структуре и придерживаться стандартов. В результате вы получите гибкий и производительный инструмент, который легко поддерживать и развивать. Практикуйтесь на небольших функциональных модулях, постепенно усложняя задачи.

Автоматическое удаление оставшихся частей кода в WordPress после деактивации плагинов
20.11.2025
Как исключить товары и варианты WooCommerce по атрибуту из корзины и оформления заказа
15.05.2026
Как отключить AJAX-перезагрузку в WordPress без потери производительности
06.02.2026
Как удалить и избежать duplicate content в WordPress
02.01.2026
Как исключить товары и варианты WooCommerce по атрибуту
26.04.2026