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

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

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

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

Создание собственного плагина полезно, если вы хотите:

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

Минимальный плагин состоит из одного PHP-файла с определенным заголовком. Обычно создают отдельную папку в директории wp-content/plugins, где размещают все файлы плагина. Структура может выглядеть так:

wpdetect-myplugin/    // Папка плагина
  wpdetect-myplugin.php  // Главный файл плагина
  README.txt            // Описание (опционально)
  assets/               // Папка для скриптов, стилей, изображений
  includes/             // Вспомогательные PHP файлы

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

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

// Код плагина ниже

Создаем базовый функционал плагина: пример простого шорткода

Одной из самых популярных задач для плагина является добавление шорткода — специального тега в содержимое, который заменяется на динамический контент. Создадим шорткод [wpdetect_hello], который выводит приветствие.

function wpdetect_hello_shortcode($atts) {
    $atts = shortcode_atts(
        array('name' => 'Гость'),
        $atts,
        'wpdetect_hello'
    );
    return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPDetect.ru.</p>';
}
add_shortcode('wpdetect_hello', 'wpdetect_hello_shortcode');

Этот код нужно вставить в главный файл плагина. Теперь при добавлении в пост [wpdetect_hello name="Иван"] отобразится персональное приветствие.

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

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

Регистрация страницы настроек

Используем хук admin_menu для добавления пункта меню:

function wpdetect_add_admin_menu() {
    add_options_page(
        'Настройки WPDetect MyPlugin',
        'WPDetect MyPlugin',
        'manage_options',
        'wpdetect_myplugin',
        'wpdetect_options_page'
    );
}
add_action('admin_menu', 'wpdetect_add_admin_menu');

Создаем форму настроек

Добавим страницу с формой, где можно задать имя для приветствия:

function wpdetect_options_page() {
    // Проверяем права
    if (!current_user_can('manage_options')) {
        return;
    }
    // Обрабатываем сохранение
    if (isset($_POST['wpdetect_name'])) {
        check_admin_referer('wpdetect_save_options');
        update_option('wpdetect_name', sanitize_text_field($_POST['wpdetect_name']));
        echo '<div class="updated">Настройки сохранены</div>';
    }
    $name = get_option('wpdetect_name', 'Гость');
    ?>
    <div class="wrap">
        <h1>Настройки WPDetect MyPlugin</h1>
        <form method="post">
            <?php wp_nonce_field('wpdetect_save_options'); ?>
            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Имя для приветствия</th>
                    <td><input type="text" name="wpdetect_name" value="<?php echo esc_attr($name); ?>" /></td>
                </tr>
            </table>
            <input type="submit" class="button-primary" value="Сохранить изменения" />
        </form>
    </div>
    <?php
}

Таким образом, администратор сможет менять имя для приветствия без редактирования кода.

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

Изменим шорткод, чтобы по умолчанию брать имя из настроек:

function wpdetect_hello_shortcode($atts) {
    $default_name = get_option('wpdetect_name', 'Гость');
    $atts = shortcode_atts(
        array('name' => $default_name),
        $atts,
        'wpdetect_hello'
    );
    return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPDetect.ru.</p>';
}

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

Если в плагине есть интерфейсные элементы, важно корректно подключать CSS и JS, чтобы не конфликтовать с темой и другими плагинами.

Используем хук wp_enqueue_scripts для фронтенда и admin_enqueue_scripts для админки. Пример подключения CSS:

function wpdetect_enqueue_scripts() {
    wp_enqueue_style('wpdetect-style', plugin_dir_url(__FILE__) . 'assets/css/style.css', array(), '1.0');
}
add_action('wp_enqueue_scripts', 'wpdetect_enqueue_scripts');

Для админки:

function wpdetect_admin_scripts($hook) {
    if ($hook != 'settings_page_wpdetect_myplugin') {
        return;
    }
    wp_enqueue_style('wpdetect-admin-style', plugin_dir_url(__FILE__) . 'assets/css/admin.css', array(), '1.0');
}
add_action('admin_enqueue_scripts', 'wpdetect_admin_scripts');

Отладка и локализация плагина

Для удобства отладки советую использовать функции типа error_log и WP_DEBUG. Также полезно делать плагин переводимым, оборачивая строки в __() и _e() с уникальным текстовым доменом.

Пример:

__('Привет, %s!', 'wpdetect-myplugin');

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

Несколько инструментов, которые помогут разработчику:

Итог

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

Обслуживание REST API WordPress — практические советы и примеры кода
29.11.2025
Как избежать конфликтов плагинов в WordPress: проверенные методы и примеры кода
01.11.2025
Как создать адаптивный блок с выбором темы в WordPress: практическое руководство
10.11.2025
Отладка проблем с переадресацией в WordPress: практические решения и примеры
23.12.2025
Автоматизация резервного копирования WordPress с помощью плагинов и кода
02.12.2025