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

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

Основы создания плагина WordPress: структура и файлы

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

Структура минимального плагина выглядит так:

wpfind-simple-plugin/  
  wpfind-simple-plugin.php

В файле wpfind-simple-plugin.php обязательно должен быть заголовок плагина:

<?php
/**
 * Plugin Name: WPFind Simple Plugin
 * Description: Пример минимального плагина для WordPress
 * Version: 1.0
 * Author: WPFind.ru
 */

// Код плагина здесь

Этот заголовок позволяет WordPress определить название, описание и автора плагина.

Подключение хуков и фильтров: расширяем функциональность

Хуки — это основа взаимодействия плагинов с ядром WordPress. Существуют два типа: действия (actions) и фильтры (filters). Действия позволяют выполнить код в определённый момент, а фильтры — изменить данные перед выводом или сохранением.

Например, добавим действие, которое выводит сообщение внизу каждой записи:

function wpfind_add_footer_message() {
    echo '<p style="text-align:center; color:#999;">Спасибо, что читаете WPFind!</p>';
}
add_action('the_content', 'wpfind_add_footer_message');

Однако, использовать the_content как действие не совсем корректно, потому что это фильтр. Лучше использовать фильтр для изменения контента:

function wpfind_modify_post_content($content) {
    if(is_single()) {
        $content .= '<p style="text-align:center; color:#999;">Спасибо, что читаете WPFind!</p>';
    }
    return $content;
}
add_filter('the_content', 'wpfind_modify_post_content');

Так мы добавим сообщение только к одиночным записям.

Структурирование плагина: подключение дополнительных файлов

По мере роста плагина, один файл становится неудобным. Хорошей практикой считается разбивать функционал по файлам и подключать их через require_once или include_once.

Например, создадим папку includes и файл functions.php для вспомогательных функций:

wpfind-simple-plugin/
  includes/
    functions.php
  wpfind-simple-plugin.php

В главном файле подключим этот файл:

require_once plugin_dir_path(__FILE__) . 'includes/functions.php';

В functions.php можно разместить любые вспомогательные функции, чтобы код был чистым и поддерживаемым.

Безопасность и стандарты: важные моменты при разработке

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

  • sanitize_text_field() — для очистки текстовых данных
  • esc_html() — для безопасного вывода в HTML
  • wp_nonce_field() и check_admin_referer() — для защиты форм

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

defined('ABSPATH') or die('No script kiddies please!');

Пример простого плагина с настройками в админке

Создадим простой плагин, который добавляет на сайт произвольное сообщение, задаваемое в настройках админки.

1. Создаем меню настроек

function wpfind_simple_plugin_add_admin_menu() {
    add_options_page(
        'WPFind Simple Plugin',
        'WPFind Plugin',
        'manage_options',
        'wpfind-simple-plugin',
        'wpfind_simple_plugin_options_page'
    );
}
add_action('admin_menu', 'wpfind_simple_plugin_add_admin_menu');

2. Регистрируем настройки

function wpfind_simple_plugin_settings_init() {
    register_setting('wpfindSimplePlugin', 'wpfind_simple_plugin_options');

    add_settings_section(
        'wpfind_simple_plugin_section',
        __('Основные настройки', 'wpfind'),
        null,
        'wpfindSimplePlugin'
    );

    add_settings_field(
        'wpfind_simple_plugin_text',
        __('Сообщение', 'wpfind'),
        'wpfind_simple_plugin_text_render',
        'wpfindSimplePlugin',
        'wpfind_simple_plugin_section'
    );
}
add_action('admin_init', 'wpfind_simple_plugin_settings_init');

function wpfind_simple_plugin_text_render() {
    $options = get_option('wpfind_simple_plugin_options');
    ?>
    <input type='text' name='wpfind_simple_plugin_options[wpfind_simple_plugin_text]' value='<?php echo esc_attr($options['wpfind_simple_plugin_text'] ?? ''); ?>' />
    <?php
}

3. Страница настроек

function wpfind_simple_plugin_options_page() {
    ?>
    <form action='options.php' method='post'>
        <h2>WPFind Simple Plugin</h2>
        <?php
        settings_fields('wpfindSimplePlugin');
        do_settings_sections('wpfindSimplePlugin');
        submit_button();
        ?>
    </form>
    <?php
}

4. Вывод сообщения на сайте

function wpfind_simple_plugin_display_message($content) {
    if (is_single()) {
        $options = get_option('wpfind_simple_plugin_options');
        $message = $options['wpfind_simple_plugin_text'] ?? '';
        if (!empty($message)) {
            $content .= '<p style="color: #0073aa; font-weight: bold;">' . esc_html($message) . '</p>';
        }
    }
    return $content;
}
add_filter('the_content', 'wpfind_simple_plugin_display_message');

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

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

  • Debug Bar — выводит отладочную информацию в админ-панели WordPress.
  • Query Monitor — показывает запросы к базе данных, ошибки PHP и многое другое.
  • WP-CLI — консольный инструмент для управления WordPress, включая создание шаблонов плагинов.
  • PHP CodeSniffer с стандартом WordPress — помогает соблюдать кодстайл WordPress.

Заключение

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

Как создать динамические фильтры в WordPress с помощью REST API
13.04.2026
Как создать динамические категории в WordPress с помощью кода
19.01.2026
Правильное использование WP Filter хуков для оптимальной работы WordPress
20.03.2026
Оптимизация базы данных WordPress: практические советы и примеры
14.11.2025
WooCommerce: решение проблемы с непоявлением вариаций при использовании кэширования
20.04.2026

Сайт в разработке, скоро здесь будет портал о WordPress.