Рубрики
WordPress

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

Создание плагина для WordPress — это не просто «написать файл с кодом», а спроектировать расширение, которое корректно встраивается в архитектуру CMS (хуки, API, структура файлов).

1. База: как устроен плагин

Плагин — это PHP-модуль, который:

  • подключается к ядру WordPress
  • использует hooks (actions и filters)
  • расширяет или изменяет поведение сайта

Минимально — это один PHP-файл, но в реальности почти всегда используется структура проекта.

2. Минимальный плагин (стартовая точка)

Создай файл:

/wp-content/plugins/my-first-plugin/my-first-plugin.php

Внутри:

<?php
/*
Plugin Name: My First Plugin
Description: Пример простого плагина
Version: 1.0
Author: Your Name
*/

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

После этого:

  • зайди в админку WordPress
  • активируй плагин

👉 Уже на этом этапе WordPress распознаёт его.

3. Хуки — ядро всей логики

3.1 Actions (действия)

Позволяют «вставить» код в определённый момент.

Пример:

add_action('wp_footer', 'my_plugin_footer_text');

function my_plugin_footer_text() {
    echo '<p style="text-align:center;">Добавлено плагином</p>';
}

➡ Это добавит текст в футер сайта.

3.2 Filters (фильтры)

Позволяют изменить данные.

add_filter('the_content', 'my_plugin_modify_content');

function my_plugin_modify_content($content) {
    return $content . '<p>Дополнение от плагина</p>';
}

➡ Меняет содержимое поста.

4. Правильная структура плагина

Для серьёзной разработки:

my-plugin/
│
├── my-plugin.php
├── includes/
│   ├── functions.php
│   ├── admin.php
│
├── assets/
│   ├── css/
│   ├── js/
│
└── templates/

Главный файл подключает модули:

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

5. Добавление настроек в админку

5.1 Регистрируем меню

add_action('admin_menu', 'my_plugin_menu');

function my_plugin_menu() {
    add_menu_page(
        'Настройки плагина',
        'Мой плагин',
        'manage_options',
        'my-plugin',
        'my_plugin_settings_page'
    );
}

5.2 Страница настроек

function my_plugin_settings_page() {
    echo '<h1>Настройки плагина</h1>';
}

6. Работа с базой данных

WordPress даёт API:

6.1 Сохранение данных

update_option('my_plugin_option', 'value');

6.2 Получение

$value = get_option('my_plugin_option');

👉 Это предпочтительнее прямых SQL-запросов.

7. Подключение CSS и JS

Важно использовать правильные хуки:

add_action('wp_enqueue_scripts', 'my_plugin_assets');

function my_plugin_assets() {
    wp_enqueue_style('my-style', plugin_dir_url(__FILE__) . 'assets/css/style.css');
    wp_enqueue_script('my-script', plugin_dir_url(__FILE__) . 'assets/js/script.js', [], false, true);
}

8. Активация и деактивация плагина

register_activation_hook(__FILE__, 'my_plugin_activate');
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

function my_plugin_activate() {
    // например, создать опции
}

function my_plugin_deactivate() {
    // очистка
}

9. Безопасность (критически важно)

Минимальные требования:

Проверка доступа

if (!current_user_can('manage_options')) {
    return;
}

Nonce (защита форм)

wp_nonce_field('my_action', 'my_nonce');

Проверка:

if (!wp_verify_nonce($_POST['my_nonce'], 'my_action')) {
    return;
}

10. Шорткоды (часто используются)

add_shortcode('my_shortcode', 'my_shortcode_func');

function my_shortcode_func() {
    return '<p>Это шорткод</p>';
}

Использование:

[my_shortcode]

11. AJAX внутри плагина

add_action('wp_ajax_my_action', 'my_ajax_handler');

function my_ajax_handler() {
    echo 'Ответ сервера';
    wp_die();
}

12. Объектно-ориентированный подход (рекомендуется)

class MyPlugin {

    public function __construct() {
        add_action('wp_footer', [$this, 'footer']);
    }

    public function footer() {
        echo 'ООП плагин';
    }
}

new MyPlugin();

👉 Это масштабируемый подход.

13. Типичные ошибки новичков

  1. ❌ Пишут код прямо в теме вместо плагина
  2. ❌ Не используют хуки
  3. ❌ Игнорируют безопасность
  4. ❌ Загружают скрипты неправильно
  5. ❌ Не разделяют код на модули

14. Как развиваться дальше

После базового уровня стоит изучить:

  • REST API WordPress
  • Custom Post Types
  • Gutenberg блоки
  • Composer + автозагрузка
  • MVC-подход в плагинах

Создание плагина — это комбинация:

  • понимания жизненного цикла WordPress
  • работы с хуками
  • грамотной архитектуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *