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

Digital-студия WNDER

Что такое плагин и зачем он нужен

Плагин — это как приложение для вашего телефона, только для WordPress. Он добавляет новые функции: от простого счётчика посещений до сложного интернет-магазина. Вместо того чтобы менять ядро WordPress (что опасно и неудобно), вы создаёте отдельный модуль, который можно включить или выключить в любой момент.

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

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

Структура плагина: с чего начать

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

Создайте папку, например my-plugin, и внутри — файл my-plugin.php. В начале файла добавьте такой комментарий:

<?php
/**
 * Plugin Name: Мой плагин
 * Description: Простой плагин для демонстрации.
 * Version: 1.0
 * Author: Ваше имя
 */

Это как паспорт плагина. WordPress читает эти строки и показывает информацию в админке. Без этого файл не считается плагином.

Теперь добавьте простой код, чтобы плагин что-то делал. Например, выведем сообщение в консоль браузера:

function my_plugin_console_log() {
    echo '<script>console.log("Плагин работает!");</script>';
}
add_action('wp_footer', 'my_plugin_console_log');

Здесь мы используем хук wp_footer — это место внизу каждой страницы. Функция добавляет JavaScript-код, который выводит сообщение в консоль. Просто, но наглядно.

Структура плагина может быть разной, но я рекомендую разделять код на файлы: например, includes/ для функций, admin/ для админки, assets/ для стилей и скриптов. Это облегчает поддержку.

Хуки: как WordPress понимает ваш код

Хуки — это, пожалуй, самое важное в разработке плагинов. Они позволяют вашему коду «вклиниваться» в работу WordPress в определённых местах. Есть два типа: действия (actions) и фильтры (filters).

Действия — это события, которые происходят в WordPress: например, загрузка страницы, отправка формы, сохранение записи. Вы можете прикрепить свою функцию к событию с помощью add_action. Фильтры — это функции, которые изменяют данные: например, заменяют текст, добавляют классы к ссылкам.

Рассмотрим пример с фильтром. Допустим, мы хотим изменить текст в подвале сайта:

function my_plugin_footer_text($text) {
    $text = 'Текст от моего плагина';
    return $text;
}
add_filter('admin_footer_text', 'my_plugin_footer_text');

Здесь admin_footer_text — это фильтр, который управляет текстом в подвале админки. Наша функция получает текущий текст, заменяет его на свой и возвращает. WordPress использует возвращённое значение.

Хуки — это мостик между вашим кодом и ядром. Без них плагины были бы бесполезны, потому что вы не могли бы повлиять на работу WordPress.

Практический пример: плагин для вывода случайной цитаты

Давайте создадим полезный плагин, который выводит случайную цитату в подвале сайта. Это покажет, как работать с данными и хуками.

Сначала добавим массив цитат и функцию для выбора случайной:

function my_plugin_get_random_quote() {
    $quotes = array(
        'Жизнь — это то, что с тобой происходит, пока ты строишь планы.',
        'Успех — это способность идти от неудачи к неудаче, не теряя энтузиазма.',
        'Лучший способ предсказать будущее — изобрести его.'
    );
    $index = array_rand($quotes);
    return $quotes[$index];
}

Теперь выведем цитату в подвале. Для этого используем хук wp_footer:

function my_plugin_display_quote() {
    $quote = my_plugin_get_random_quote();
    echo '<div style="text-align:center; padding:10px;">' . $quote . '</div>';
}
add_action('wp_footer', 'my_plugin_display_quote');

Готово! Теперь при каждом обновлении страницы будет показываться новая цитата. Конечно, это простой пример, но он демонстрирует базовые принципы.

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

Безопасность: защищаем плагин от взлома

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

Проверяйте права доступа. Если ваш плагин выполняет действия в админке, убедитесь, что пользователь имеет соответствующие права. Используйте current_user_can() для проверки.

Экранируйте вывод. Когда вы выводите данные, которые могут содержать HTML или JavaScript, используйте esc_html() или esc_attr(), чтобы предотвратить XSS-атаки.

Проверяйте nonce. Nonce — это одноразовый токен, который защищает от подделки запросов. Добавляйте его в формы и ссылки.

Вот пример безопасной обработки формы:

function my_plugin_save_data() {
    if (!current_user_can('manage_options')) {
        wp_die('Недостаточно прав');
    }
    if (!isset($_POST['my_nonce']) || !wp_verify_nonce($_POST['my_nonce'], 'my_action')) {
        wp_die('Неверный nonce');
    }
    $data = sanitize_text_field($_POST['my_data']);
    update_option('my_data', $data);
}
add_action('admin_post_my_save', 'my_plugin_save_data');

Здесь мы проверяем права, nonce и очищаем данные перед сохранением. Это базовый минимум, но он уже защищает от многих атак.

Лайфхак: всегда используйте префикс для своих функций и переменных, например mp_ (мой плагин). Это предотвращает конфликты с другими плагинами и темами.

Тестирование и отладка

Прежде чем выпустить плагин в мир, его нужно протестировать. Я рекомендую использовать локальный сервер, например, Local by Flywheel или XAMPP. Это позволяет безопасно экспериментировать, не боясь сломать живой сайт.

Для отладки включите режим отладки в WordPress. В файле wp-config.php добавьте:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

Это запишет все ошибки в файл wp-content/debug.log. Так вы увидите, что именно не работает.

Также полезно использовать инструменты разработчика в браузере. Откройте консоль и смотрите на ошибки JavaScript — они часто указывают на проблемы в коде.

ИнструментНазначение
XAMPPЛокальный сервер для тестирования
WP_DEBUGВывод ошибок PHP на экран
Chrome DevToolsОтладка JavaScript и CSS
Query MonitorПлагин для анализа запросов к базе данных

Не забывайте тестировать на разных версиях PHP и WordPress. То, что работает на одной версии, может сломаться на другой.

Что в итоге

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

Помните: главное — практика. Напишите свой первый плагин, даже если он будет выводить просто «Привет, мир». Потом добавьте настройки, потом интеграцию с API. Каждый шаг делает вас лучше.

Если вы хотите профессиональную разработку, обратитесь в Digital-студию WNDER — мы поможем с любыми задачами.

Студия WNDER