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

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

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

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

  • Добавить уникальные функции на сайт;
  • Автоматизировать задачи;
  • Интегрировать внешний функционал;
  • Расширить возможности темы.

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

Структура простого плагина WordPress

Минимальная структура плагина:

wpbest-myplugin/  - директория плагина
  wpbest-myplugin.php - основной файл плагина
  readme.txt (опционально)
  /includes/ - вспомогательные файлы
  /assets/ - CSS, JS, изображения

Основной файл должен иметь заголовок, чтобы WordPress распознал плагин:

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

// Твой код здесь

Регистрация хуков: действия и фильтры

WordPress построен на системе хуков, которые позволяют изменить поведение ядра и других компонентов.

Действия (Actions)

Действия — это события, во время которых можно выполнять свой код.

function wpbest_myplugin_init() {
    // код при инициализации плагина
}
add_action('init', 'wpbest_myplugin_init');

Пример: добавим пользовательский тип записи:

function wpbest_register_custom_post_type() {
    $args = [
        'public' => true,
        'label'  => 'Продукты'
    ];
    register_post_type('product', $args);
}
add_action('init', 'wpbest_register_custom_post_type');

Фильтры (Filters)

Фильтры позволяют изменять данные перед выводом или сохранением.

function wpbest_change_excerpt_length($length) {
    return 20; // длина отрывка в словах
}
add_filter('excerpt_length', 'wpbest_change_excerpt_length');

Обработка форм и безопасность

Если в плагине есть формы для ввода, нужно обязательно защитить их от CSRF и XSS.

Используйте wp_nonce_field() для добавления nonce в форму и проверяйте его при обработке.

function wpbest_render_form() {
    echo '<form method="post" action="">';
    wp_nonce_field('wpbest_form_action', 'wpbest_form_nonce');
    echo '<input type="text" name="wpbest_data" />';
    echo '<input type="submit" value="Отправить" />';
    echo '</form>';
}

function wpbest_handle_form() {
    if (!empty($_POST['wpbest_form_nonce']) && wp_verify_nonce($_POST['wpbest_form_nonce'], 'wpbest_form_action')) {
        $data = sanitize_text_field($_POST['wpbest_data']);
        // Обработка $data
        echo 'Данные сохранены: ' . esc_html($data);
    }
}
add_action('admin_post_wpbest_form_submit', 'wpbest_handle_form');

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

Для добавления стилей и скриптов используйте функцию wp_enqueue_scripts для фронтенда и admin_enqueue_scripts для админки.

function wpbest_enqueue_assets() {
    wp_enqueue_style('wpbest-style', plugins_url('assets/style.css', __FILE__));
    wp_enqueue_script('wpbest-script', plugins_url('assets/script.js', __FILE__), ['jquery'], null, true);
}
add_action('wp_enqueue_scripts', 'wpbest_enqueue_assets');

Это позволит корректно загрузить файлы без конфликтов.

Пример плагина: добавление виджета с приветствием

Создадим простой виджет, который выводит приветствие и текущую дату.

class WPBest_Greeting_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'wpbest_greeting_widget',
            'WPBest Приветствие',
            ['description' => 'Выводит приветствие и дату']
        );
    }

    public function widget($args, $instance) {
        echo $args['before_widget'];
        echo '<h3>Привет от WPBest!</h3>';
        echo '<p>Сегодня: ' . date('d.m.Y') . '</p>';
        echo $args['after_widget'];
    }
}

function wpbest_register_greeting_widget() {
    register_widget('WPBest_Greeting_Widget');
}
add_action('widgets_init', 'wpbest_register_greeting_widget');

Этот код добавит новый виджет, который можно разместить в любой области виджетов темы.

Отладка и логирование в плагине

Для поиска ошибок полезно использовать функцию error_log() и WP_DEBUG.

Пример записи в лог:

function wpbest_log_example() {
    error_log('WPBest: Запуск функции wpbest_log_example');
}
add_action('init', 'wpbest_log_example');

Не забывайте отключать отладку в продакшене.

Выводы и полезные советы

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

Оптимизация кэширования в WordPress для ускорения сайта
02.12.2025
Как создать свой плагин WordPress с нуля
10.11.2025
Как использовать REST API в WordPress для создания настраиваемых приложений
23.11.2025
Как сделать удалённую загрузку файлов в WordPress через AJAX с примерами
04.01.2026
Как создать отслеживание событий в WordPress с помощью REST API
17.12.2025