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

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

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

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

  • Решить конкретную задачу без избыточного кода.
  • Оптимизировать производительность за счёт минимального объёма кода.
  • Гарантировать безопасность за счёт контроля над каждой строкой.
  • Учиться и лучше понимать внутренние механизмы WordPress.

Кроме того, написание плагина — это полезный навык для любого разработчика на WordPress.

Структура и базовый файл плагина WordPress

Плагин — это папка с файлами в директории wp-content/plugins. Минимально необходимый файл — главный PHP-файл с заголовком плагина. Создадим папку wpmy-simple-plugin и файл wpmy-simple-plugin.php.

В начале файла добавим стандартный заголовок:

<?php
/*
Plugin Name: WPMy Simple Plugin
Plugin URI: https://wpmy.ru
Description: Пример простого плагина для WordPress
Version: 1.0
Author: WPMy
Author URI: https://wpmy.ru
License: GPL2
*/

Этот блок необходим, чтобы WordPress распознал плагин и вывел информацию в админке.

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

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

function wpmy_add_notification_to_content($content) {
    if(is_singular('post')) {
        $notification = '<div style="padding:10px; background:#f0f8ff; border:1px solid #a0c4ff; margin-bottom:20px;">Это кастомное уведомление от плагина WPMy.</div>';
        return $notification . $content;
    }
    return $content;
}
add_filter('the_content', 'wpmy_add_notification_to_content');

Этот код добавляет блок с уведомлением перед содержимым каждой записи (post). Таким образом, вы видите, как легко изменять вывод с помощью плагина.

Создание административной страницы плагина

Для управления плагином полезно иметь собственную страницу настроек в админке WordPress. Добавим её с помощью функции add_menu_page.

function wpmy_simple_plugin_menu() {
    add_menu_page(
        'WPMy Simple Plugin', // Заголовок страницы
        'WPMy Settings',       // Название меню
        'manage_options',      // Возможность доступа
        'wpmy-simple-plugin',  // Уникальный слаг
        'wpmy_simple_plugin_settings_page', // Функция вывода
        'dashicons-admin-generic', // Иконка
        80
    );
}
add_action('admin_menu', 'wpmy_simple_plugin_menu');

function wpmy_simple_plugin_settings_page() {
    if(!current_user_can('manage_options')) {
        return;
    }
    if(isset($_POST['wpmy_plugin_option'])) {
        update_option('wpmy_plugin_option', sanitize_text_field($_POST['wpmy_plugin_option']));
        echo '<div class="updated notice"><p>Настройки сохранены.</p></div>';
    }
    $value = get_option('wpmy_plugin_option', '');
    echo '<div class="wrap">';
    echo '<h1>Настройки WPMy Simple Plugin</h1>';
    echo '<form method="post" action="">';
    echo '<label for="wpmy_plugin_option">Введите значение:</label><br>';
    echo '<input type="text" id="wpmy_plugin_option" name="wpmy_plugin_option" value="' . esc_attr($value) . '" style="width:300px;"><br><br>';
    echo '<input type="submit" value="Сохранить" class="button button-primary">';
    echo '</form></div>';
}

Этот код создаёт меню в админке с простыми настройками, которые сохраняются в базе данных через опции.

Безопасность и стандарты кодирования WordPress

При создании плагинов важно соблюдать стандарты WordPress:

  • Используйте префиксы для всех функций и переменных, чтобы избежать конфликтов (например, wpmy_).
  • Обязательно проверяйте права пользователя перед сохранением настроек (как в примере с current_user_can).
  • Обрабатывайте и фильтруйте данные, поступающие от пользователя — используйте функции sanitize_text_field, esc_attr и другие.
  • Используйте переводы, если планируете локализацию — для простоты можно позже добавить __() и _e().

Соблюдение этих правил гарантирует стабильную и безопасную работу плагина.

Пример добавления безопасности nonce для формы

Добавим nonce-поле для защиты от CSRF-атак:

function wpmy_simple_plugin_settings_page() {
    if(!current_user_can('manage_options')) {
        return;
    }
    if(isset($_POST['wpmy_plugin_option'])) {
        if(!isset($_POST['wpmy_plugin_nonce']) || !wp_verify_nonce($_POST['wpmy_plugin_nonce'], 'wpmy_save_settings')) {
            echo '<div class="error notice"><p>Ошибка безопасности. Попробуйте снова.</p></div>';
            return;
        }
        update_option('wpmy_plugin_option', sanitize_text_field($_POST['wpmy_plugin_option']));
        echo '<div class="updated notice"><p>Настройки сохранены.</p></div>';
    }
    $value = get_option('wpmy_plugin_option', '');
    echo '<div class="wrap">';
    echo '<h1>Настройки WPMy Simple Plugin</h1>';
    echo '<form method="post" action="">';
    wp_nonce_field('wpmy_save_settings', 'wpmy_plugin_nonce');
    echo '<label for="wpmy_plugin_option">Введите значение:</label><br>';
    echo '<input type="text" id="wpmy_plugin_option" name="wpmy_plugin_option" value="' . esc_attr($value) . '" style="width:300px;"><br><br>';
    echo '<input type="submit" value="Сохранить" class="button button-primary">';
    echo '</form></div>';
}

Расширение плагина: добавление шорткода

Часто полезно добавлять шорткоды для вывода функционала в любом месте сайта. Добавим простой шорткод, который выведет сохранённое в настройках значение.

function wpmy_simple_plugin_shortcode() {
    $value = get_option('wpmy_plugin_option', 'Значение не задано');
    return '<div style="padding:10px; background:#e0ffe0; border:1px solid #00cc00;">Настройка плагина: ' . esc_html($value) . '</div>';
}
add_shortcode('wpmy_setting', 'wpmy_simple_plugin_shortcode');

Теперь вы можете использовать шорткод [wpmy_setting] в любом посте или странице, чтобы вывести текущее значение опции плагина.

Резюме и дальнейшие шаги

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

Дальше можно изучить:

  • Работу с кастомными типами записей и метаполями.
  • Добавление собственных стилей и скриптов через wp_enqueue_scripts.
  • Использование AJAX в плагинах WordPress.
  • Локализацию и интернационализацию плагинов.

Создавайте свои плагины осознанно и с удовольствием, чтобы сделать WordPress ещё удобнее и мощнее!

Как установить и настроить WooCommerce для интернет-магазина на WordPress
03.12.2025
WooCommerce: как решить проблему с неотображением вариаций товаров
25.05.2026
Как отключить комментарии на отдельных страницах WordPress
10.04.2026
Оптимизация изображений WordPress: автоматическое изменение размера и сжатие
13.03.2026
Как удалить вредоносные плагины в WordPress: пошаговое руководство
13.11.2025