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

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

Что такое плагин WordPress и зачем его создавать

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

Основные преимущества своего плагина:

  • Индивидуальная настройка под потребности проекта.
  • Лёгкость поддержки и обновления.
  • Безопасность и контроль качества кода.

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

Минимальный плагин — это один PHP-файл с заголовком, который подключается системой WordPress. Рассмотрим стандартную структуру:

<?php
/**
 * Plugin Name: WPIN Sample Plugin
 * Description: Пример простого плагина для WPIN.ru
 * Version: 1.0
 * Author: Автор
 */

// Ваш код здесь

Заголовок плагина необходим для отображения его в админке. После него идёт основной код. Для удобства разработки и масштабирования рекомендуется создавать папку с именем плагина и помещать туда все файлы.

Создаём базовую папку и файл плагина

В директории wp-content/plugins создайте папку wpin-sample-plugin. В ней создайте файл wpin-sample-plugin.php с заголовком из примера выше.

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

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

function wpin_greeting_shortcode() {
    if (is_user_logged_in()) {
        $current_user = wp_get_current_user();
        return 'Привет, ' . esc_html($current_user->display_name) . '! Добро пожаловать на WPIN.ru.';
    } else {
        return 'Здравствуйте, гость! Пожалуйста, войдите, чтобы получить персональное приветствие.';
    }
}
add_shortcode('wpin_greeting', 'wpin_greeting_shortcode');

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

Безопасность и оптимизация кода плагина

При разработке плагина нужно помнить о безопасности и производительности. Несколько советов:

  • Используйте esc_html() и другие функции экранирования для вывода данных.
  • Не забывайте проверять права доступа и валидировать входящие данные.
  • Подключайте JavaScript и CSS через функции wp_enqueue_script и wp_enqueue_style, чтобы избежать конфликтов.
  • Избегайте глобальных переменных и префиксируйте имена функций, чтобы не сталкиваться с конфликтами.

Пример подключения CSS в плагине

function wpin_enqueue_styles() {
    wp_enqueue_style('wpin-sample-style', plugin_dir_url(__FILE__) . 'css/style.css');
}
add_action('wp_enqueue_scripts', 'wpin_enqueue_styles');

Создайте папку css в вашем плагине и положите туда файл style.css с нужными стилями.

Расширение: добавление настроек в админку WordPress

Чтобы сделать плагин более удобным, добавим страницу настроек в панель администратора. Это позволит изменять поведение плагина без правки кода.

function wpin_add_admin_menu() {
    add_options_page(
        'Настройки WPIN плагина',
        'WPIN Плагин',
        'manage_options',
        'wpin_plugin',
        'wpin_options_page'
    );
}
add_action('admin_menu', 'wpin_add_admin_menu');

function wpin_register_settings() {
    register_setting('wpin_settings_group', 'wpin_greeting_text');
}
add_action('admin_init', 'wpin_register_settings');

function wpin_options_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPIN плагина</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wpin_settings_group');
            do_settings_sections('wpin_settings_group');
            ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Текст приветствия для гостей</th>
                    <td><input type="text" name="wpin_greeting_text" value="<?php echo esc_attr(get_option('wpin_greeting_text', 'Здравствуйте, гость! Пожалуйста, войдите, чтобы получить персональное приветствие.')); ?>" /></td>
                </tr>
            </table>
            <?php submit_button(); ?>
        </form>
    </div>
    <?php
}

// Обновим шорткод для использования настройки
function wpin_greeting_shortcode_updated() {
    if (is_user_logged_in()) {
        $current_user = wp_get_current_user();
        return 'Привет, ' . esc_html($current_user->display_name) . '! Добро пожаловать на WPIN.ru.';
    } else {
        $guest_text = get_option('wpin_greeting_text', 'Здравствуйте, гость! Пожалуйста, войдите, чтобы получить персональное приветствие.');
        return esc_html($guest_text);
    }
}
remove_shortcode('wpin_greeting');
add_shortcode('wpin_greeting', 'wpin_greeting_shortcode_updated');

Теперь администратор сможет изменять текст приветствия через панель настроек.

Полезные плагины для разработки и отладки своих плагинов

Для ускорения разработки и улучшения качества кода рекомендуем использовать следующие плагины:

  • Query Monitor — для отладки запросов к базе, хуков и ошибок PHP.
  • Debug Bar — показывает информацию о производительности и запросах.
  • Log Deprecated Notices — помогает выявлять устаревшие функции в вашем коде.
  • WP Crontrol — управляет задачами планировщика, если ваш плагин использует cron.

Использование этих инструментов позволит быстро находить узкие места и ошибки в вашем плагине.

Как установить разные версии PHP для сайтов на WordPress на одном сервере
11.12.2025
Как установить ограничение на размер загружаемых файлов в WordPress
17.02.2026
Автоматизация обработки возвратов и обменов в WooCommerce
18.05.2026
Создание динамического сайта на WordPress с использованием REST API
28.02.2026
WooCommerce: Автоматическое удаление товаров из заказа после его отмены
21.05.2026