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

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

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

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

Кроме того, опыт разработки плагинов помогает лучше освоить хуки WordPress (actions и filters), структуру данных и стандартные практики, что пригодится для более сложных проектов.

Наконец, собственные плагины легко поддерживать и обновлять, а при необходимости — делиться ими с сообществом.

Основные этапы создания плагина WordPress

Процесс создания плагина можно разбить на несколько ключевых шагов:

  • Подготовка структуры файлов и папок
  • Создание основного PHP-файла плагина с заголовком
  • Регистрация хуков для подключения функционала
  • Добавление административного интерфейса (если требуется)
  • Подключение стилей и скриптов
  • Тестирование и отладка

Рассмотрим каждый этап подробнее с примерами.

Шаг 1. Структура плагина

Минимальный плагин WordPress — это одна папка с основным PHP-файлом. Например, создадим папку wpcore-myplugin в wp-content/plugins/.

Рекомендуемая структура для более сложных плагинов:

wpcore-myplugin/  
├── wpcore-myplugin.php  
├── includes/  
├── admin/  
├── assets/  
│   ├── css/  
│   └── js/  
└── languages/ 

Такой подход упрощает поддержку и масштабирование проекта.

Шаг 2. Основной файл плагина с заголовком

Файл wpcore-myplugin.php обязательно должен содержать заголовок, чтобы WordPress распознал плагин:

<?php
/**
 * Plugin Name: WPCore My Plugin
 * Plugin URI: https://wpcore.ru
 * Description: Пример собственного плагина для WordPress
 * Version: 1.0.0
 * Author: WPCore Team
 * Author URI: https://wpcore.ru
 * License: GPL2
 */

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

// Подключаем основные файлы
require_once plugin_dir_path( __FILE__ ) . 'includes/wpcore-functions.php';

Эти комментарии обязательны для отображения плагина в админке.

Шаг 3. Использование хуков WordPress

В файле includes/wpcore-functions.php можно разместить основную логику. Например, добавим простой шорткод, который выводит текст:

<?php

function wpcore_shortcode_hello() {
    return '<p>Привет от плагина WPCore!</p>';
}
add_shortcode( 'wpcore_hello', 'wpcore_shortcode_hello' );

Вы можете вставлять [wpcore_hello] в записи или страницы, и он будет выводить приветствие.

Также можно использовать action-хуки, например, добавим сообщение в футер:

function wpcore_add_footer_text() {
    echo '<p style="text-align:center; font-size:12px;">Плагин WPCore работает!</p>';
}
add_action( 'wp_footer', 'wpcore_add_footer_text' );

Добавление административной панели

Если плагин требует настроек, необходимо добавить страницу в меню админки WordPress.

Пример создания простой страницы настроек:

function wpcore_add_admin_menu() {
    add_menu_page(
        'Настройки WPCore',
        'WPCore',
        'manage_options',
        'wpcore-settings',
        'wpcore_settings_page_html',
        'dashicons-admin-generic'
    );
}
add_action('admin_menu', 'wpcore_add_admin_menu');

function wpcore_settings_page_html() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    
    if ( isset( $_POST['wpcore_setting'] ) ) {
        update_option( 'wpcore_setting', sanitize_text_field( $_POST['wpcore_setting'] ) );
        echo '<div class="updated">Настройки сохранены.</div>';
    }
    $value = get_option( 'wpcore_setting', '' );
    ?>
    <div class="wrap">
        <h1>Настройки плагина WPCore</h1>
        <form method="post" action="">
            <label for="wpcore_setting">Введите значение:</label><br>
            <input type="text" id="wpcore_setting" name="wpcore_setting" value="<?php echo esc_attr( $value ); ?>" /><br><br>
            <input type="submit" value="Сохранить" class="button-primary" />
        </form>
    </div>
    <?php
}

Теперь в меню появится пункт «WPCore» с простой формой для сохранения настроек.

Подключение CSS и JS файлов в плагине

Для улучшения интерфейса иногда нужны стили и скрипты. Подключать их нужно правильно, через хуки WordPress.

Добавим функцию для подключения CSS и JS:

function wpcore_enqueue_assets() {
    wp_enqueue_style( 'wpcore-style', plugin_dir_url( __FILE__ ) . '../assets/css/style.css', array(), '1.0.0' );
    wp_enqueue_script( 'wpcore-script', plugin_dir_url( __FILE__ ) . '../assets/js/script.js', array('jquery'), '1.0.0', true );
}
add_action( 'wp_enqueue_scripts', 'wpcore_enqueue_assets' );

Создайте файлы style.css и script.js в папке assets и добавьте нужный код.

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

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

  • Защищайте файлы от прямого доступа через проверку defined('ABSPATH').
  • Используйте функции WordPress для обработки ввода пользователя — sanitize_text_field, esc_html и т.п.
  • Не добавляйте тяжелые операции в хуки, влияющие на скорость загрузки страниц.
  • Кэшируйте результаты при необходимости.
  • Пишите комментарии и структурируйте код.

Пример расширенного функционала: создание виджета

Добавим простой виджет, который можно вывести в сайдбаре:

class WPCore_Widget extends WP_Widget {
    function __construct() {
        parent::__construct(
            'wpcore_widget',
            'WPCore Пример Виджета',
            array( 'description' => 'Простой виджет для демонстрации' )
        );
    }

    public function widget( $args, $instance ) {
        echo $args['before_widget'];
        echo $args['before_title'] . apply_filters( 'widget_title', 'Привет от WPCore' ) . $args['after_title'];
        echo '<p>Это содержимое вашего виджета.</p>';
        echo $args['after_widget'];
    }

    public function form( $instance ) {
        // Форма настроек виджета можно добавить здесь
    }

    public function update( $new_instance, $old_instance ) {
        // Обновление настроек виджета
        return $new_instance;
    }
}

function wpcore_register_widget() {
    register_widget( 'WPCore_Widget' );
}
add_action( 'widgets_init', 'wpcore_register_widget' );

После активации плагина виджет появится в списке доступных для размещения.

Заключение

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

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

WooCommerce: как автоматически удалять неактивные заказы по дате
29.04.2026
WooCommerce: как автоматически удалять заказы по статусу и дате без плагинов
02.05.2026
Автоматическое удаление старых записей в WordPress через Cron с примерами кода
29.03.2026
Автоподгрузка страниц WordPress без плагинов: реализация и примеры кода
25.11.2025
Автоматический импорт данных из YML в WordPress: практическое руководство
27.01.2026