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

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

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

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

  • Точный контроль над функционалом и кодом.
  • Оптимизацию под конкретные задачи вашего сайта.
  • Возможность легко модифицировать и масштабировать функционал.
  • Повышение навыков разработки и понимания WordPress.

Давайте посмотрим, как разработать плагин с нуля.

Основы структуры плагина WordPress

Плагин — это папка с файлами внутри директории wp-content/plugins. Минимальная структура:

my-wpweb-plugin/  → my-wpweb-plugin.php

Файл my-wpweb-plugin.php должен содержать заголовок плагина для WordPress:

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

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

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

Дополнительные файлы плагина

Для более сложных плагинов создают дополнительные PHP-файлы, CSS, JS и шаблоны. Можно создавать папки includes, assets для удобства. В нашем примере создадим простой функционал без излишних файлов.

Пример: Плагин, добавляющий шорткод для вывода приветствия

Добавим в плагин шорткод [wpweb_greeting], который выводит приветственное сообщение с именем пользователя или гостя.

function wpweb_plugin_greeting_shortcode($atts) {
    $atts = shortcode_atts(array(
        'name' => 'Гость'
    ), $atts, 'wpweb_greeting');

    return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPWeb.ru.</p>';
}
add_shortcode('wpweb_greeting', 'wpweb_plugin_greeting_shortcode');

Этот код регистрирует шорткод и выводит приветствие. Использование: [wpweb_greeting name="Иван"].

Добавление настроек плагина в админку WordPress

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

Регистрация меню в админке

function wpweb_plugin_add_admin_menu() {
    add_options_page(
        'Настройки WPWeb плагина',
        'WPWeb Plugin',
        'manage_options',
        'wpweb_plugin',
        'wpweb_plugin_options_page'
    );
}
add_action('admin_menu', 'wpweb_plugin_add_admin_menu');

Этот код добавит пункт меню в раздел «Настройки».

Создание страницы настроек

function wpweb_plugin_options_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPWeb плагина</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpweb_plugin_options_group');
            do_settings_sections('wpweb_plugin');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Регистрация настроек и полей

function wpweb_plugin_settings_init() {
    register_setting('wpweb_plugin_options_group', 'wpweb_plugin_greeting_text');

    add_settings_section(
        'wpweb_plugin_section',
        'Основные настройки',
        function() { echo '<p>Настройте приветственное сообщение для шорткода.</p>'; },
        'wpweb_plugin'
    );

    add_settings_field(
        'wpweb_plugin_greeting_text',
        'Текст приветствия',
        'wpweb_plugin_greeting_text_render',
        'wpweb_plugin',
        'wpweb_plugin_section'
    );
}
add_action('admin_init', 'wpweb_plugin_settings_init');

function wpweb_plugin_greeting_text_render() {
    $value = get_option('wpweb_plugin_greeting_text', 'Добро пожаловать на WPWeb.ru!');
    echo '<input type="text" name="wpweb_plugin_greeting_text" value="' . esc_attr($value) . '" size="50" />';
}

Использование настройки в шорткоде

Обновим шорткод, чтобы использовать текст из настроек:

function wpweb_plugin_greeting_shortcode($atts) {
    $atts = shortcode_atts(array(
        'name' => 'Гость'
    ), $atts, 'wpweb_greeting');

    $custom_text = get_option('wpweb_plugin_greeting_text', 'Добро пожаловать на WPWeb.ru!');

    return '<p>Привет, ' . esc_html($atts['name']) . '! ' . esc_html($custom_text) . '</p>';
}
add_shortcode('wpweb_greeting', 'wpweb_plugin_greeting_shortcode');

Советы по безопасности и качеству кода плагина

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

  • Используйте функции WordPress для безопасности: esc_html(), esc_attr() для вывода, sanitize_text_field() для сохранения данных.
  • Проверяйте права пользователя при сохранении настроек: current_user_can('manage_options').
  • Избегайте глобальных переменных, используйте пространства имен или префиксы для функций.
  • Подключайте CSS и JS через wp_enqueue_scripts и admin_enqueue_scripts.

Пример подключения стилей

function wpweb_plugin_enqueue_scripts() {
    wp_enqueue_style('wpweb-plugin-style', plugins_url('assets/style.css', __FILE__));
}
add_action('wp_enqueue_scripts', 'wpweb_plugin_enqueue_scripts');

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

Добавим виджет, чтобы выводить приветствие в сайдбаре.

class WPWeb_Greeting_Widget extends WP_Widget {
    public function __construct() {
        parent::__construct(
            'wpweb_greeting_widget',
            'WPWeb Приветствие',
            array('description' => 'Виджет для вывода приветственного сообщения')
        );
    }

    public function widget($args, $instance) {
        echo $args['before_widget'];
        $name = !empty($instance['name']) ? $instance['name'] : 'Гость';
        $text = get_option('wpweb_plugin_greeting_text', 'Добро пожаловать на WPWeb.ru!');
        echo $args['before_title'] . 'Приветствие' . $args['after_title'];
        echo '<p>Привет, ' . esc_html($name) . '! ' . esc_html($text) . '</p>';
        echo $args['after_widget'];
    }

    public function form($instance) {
        $name = !empty($instance['name']) ? $instance['name'] : '';
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('name'); ?>">Имя:</label> 
            <input class="widefat" id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" type="text" value="<?php echo esc_attr($name); ?>" />
        </p>
        <?php
    }

    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['name'] = (!empty($new_instance['name'])) ? sanitize_text_field($new_instance['name']) : '';
        return $instance;
    }
}

function wpweb_register_greeting_widget() {
    register_widget('WPWeb_Greeting_Widget');
}
add_action('widgets_init', 'wpweb_register_greeting_widget');

Теперь пользователи смогут добавить виджет в сайдбар и отображать персональное приветствие.

Итоги

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

Как создать свой плагин для WordPress с нуля: пошаговое руководство
04.11.2025
Как удалить неиспользуемые виджеты в WordPress для оптимизации сайта
11.02.2026
Как избежать повторов постов в WordPress
07.01.2026
Как удалить неиспользуемые термины таксономии в WordPress для оптимизации базы данных
11.01.2026
Как добавить вывод поля «Согласие с политикой конфиденциальности» в форму регистрации WordPress
02.04.2026