Разработка WordPress-плагинов под заказ

Автор:vkuzyomko

Разработка WordPress-плагинов под заказ

Краткий ответ: разработка WordPress-плагинов под заказ нужна тогда, когда готовые плагины не закрывают задачу, конфликтуют между собой, замедляют сайт или требуют слишком много лишних настроек. Индивидуальный плагин позволяет добавить нужную функцию в WordPress, WooCommerce, LearnDash, BuddyBoss, Contact Form 7 или другую часть сайта без хаотичных правок в теме.

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

Причина

Чаще всего заказчику нужен WordPress-плагин не потому, что на сайте “чего-то не хватает”, а потому что готовые решения не совпадают с реальной логикой бизнеса.

  • нужно связать WordPress с внешней CRM, Telegram, Google API, LMS или внутренней базой;
  • WooCommerce должен считать цену, доставку, скидку или статус заказа по нестандартным правилам;
  • нужно сделать личный кабинет, отчёт, импорт, экспорт, фильтр или таблицу под конкретный процесс;
  • готовый плагин слишком тяжёлый и добавляет десятки лишних функций;
  • после обновлений сайта постоянно появляются ошибки или конфликты;
  • правки в functions.php уже стали опасными и неудобными для поддержки.

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

Когда нужен плагин под заказ

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

Задача Лучшее решение Почему
Добавить небольшой визуальный блок Тема или блок Gutenberg Логика простая и связана только с внешним видом
Добавить расчёты, интеграции, AJAX, импорт Отдельный плагин Код должен работать независимо от темы
Изменить логику WooCommerce Плагин или дочерняя тема Зависит от того, влияет ли код на заказы, оплату и корзину
Сделать отчёты, роли, доступы, кабинеты Кастомный плагин Нужны свои таблицы, права, настройки и безопасность
Исправить одну ошибку Точечная доработка Не всегда нужен полноценный плагин

Что можно разработать в виде WordPress-плагина

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

  • интеграцию с CRM, Telegram, Google Sheets, Google API, OpenAI API, платёжными системами;
  • кастомные формы с отправкой писем, заявок и уведомлений;
  • импорт и экспорт Excel, CSV, XML, JSON;
  • личные кабинеты пользователей;
  • отчёты по пользователям, заказам, курсам, группам или компаниям;
  • доработку WooCommerce: checkout, статусы заказов, поля, цены, скидки, доставка;
  • автоматические cron-задачи;
  • админ-страницы с настройками;
  • шорткоды и Gutenberg-блоки;
  • систему ролей и доступов;
  • оптимизацию тяжёлых процессов, которые сейчас тормозят сайт.

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

Диагностика

Перед разработкой плагина важно понять, где именно должна жить логика: в теме, в дочерней теме, в mu-plugin или в обычном плагине. Ошибка на этом этапе часто приводит к тому, что сайт потом сложно обновлять.

Что нужно проверить перед разработкой

  • версию PHP;
  • версию WordPress;
  • активную тему и дочернюю тему;
  • список активных плагинов;
  • наличие WooCommerce, LearnDash, BuddyBoss или других крупных систем;
  • ошибки в debug.log;
  • нагрузку на admin-ajax.php;
  • cron-задачи;
  • структуру базы данных;
  • наличие кеша, CDN, Redis или Object Cache;
  • права пользователей, которые будут работать с новым функционалом.

Минимальный чек-лист для владельца сайта

  • описать, что должно происходить при нажатии кнопки или выполнении действия;
  • указать, кто может пользоваться функцией: админ, менеджер, клиент, гость;
  • показать пример входных данных;
  • показать пример нужного результата;
  • указать, какие плагины уже участвуют в этой логике;
  • подготовить доступ к тестовой копии сайта, если задача влияет на заказы, оплату или пользователей.

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Правильная разработка WordPress-плагина под заказ обычно идёт не с написания кода, а с описания логики. Чем точнее описана задача, тем меньше переделок будет после первого теста.

Этапы разработки

  • 1. Разбор задачи. Что нужно автоматизировать, какие данные есть, какой результат нужен.
  • 2. Проверка сайта. Анализ темы, плагинов, базы, ошибок, скорости и конфликтов.
  • 3. Проектирование логики. Шорткоды, AJAX, REST API, cron, таблицы, настройки, права доступа.
  • 4. Создание структуры плагина. Главный файл, папки assets, includes, templates, uninstall.php.
  • 5. Разработка функционала. PHP, WordPress hooks, jQuery, MySQL, AJAX, HTML, CSS.
  • 6. Безопасность. nonce, capability checks, sanitize, escape, prepare для SQL-запросов.
  • 7. Тестирование. Проверка на тестовом сайте, debug.log, разные роли пользователей.
  • 8. Установка на рабочий сайт. Лучше через staging или в период низкой активности.
  • 9. Поддержка. Исправления после обновлений WordPress, PHP, WooCommerce или других плагинов.

Код

Важно: код ниже — учебный пример структуры простого плагина. Не вставляйте его в рабочий сайт без проверки. Если плагин будет работать с заказами WooCommerce, оплатой, пользователями, доступами или базой данных, сначала тестируйте на копии сайта.

Пример минимального плагина WordPress

Куда вставлять: создать папку wp-content/plugins/sc-custom-request и файл sc-custom-request.php.

<?php
/**
 * Plugin Name: SC Custom Request
 * Description: Пример простого плагина под заказ с шорткодом и AJAX.
 * Version: 1.0.0
 * Author: vkuzyomko
 */

if (!defined('ABSPATH')) {
    exit;
}

add_shortcode('sc_custom_request_form', 'sc_custom_request_form_html');

function sc_custom_request_form_html() {
    ob_start();
    ?>

    <div class="sc-custom-request-box">
        <input type="text" id="sc_custom_name" placeholder="Ваше имя">
        <input type="text" id="sc_custom_phone" placeholder="Телефон">
        <button type="button" id="sc_custom_send">Отправить</button>
        <div id="sc_custom_result"></div>
    </div>

    <script>
    jQuery(document).ready(function() {
        jQuery(document).on('click', '#sc_custom_send', function() {
            var name = jQuery('#sc_custom_name').val();
            var phone = jQuery('#sc_custom_phone').val();

            jQuery.ajax({
                url: '<?php echo admin_url("admin-ajax.php") ?>',
                type: 'POST',
                dataType: 'json',
                data: {
                    action: 'sc_custom_request_send',
                    name: name,
                    phone: phone,
                    nonce: '<?php echo wp_create_nonce("sc_custom_request_nonce") ?>'
                },
                success: function(response) {
                    if (response.success) {
                        jQuery('#sc_custom_result').html(response.data.message);
                    } else {
                        jQuery('#sc_custom_result').html(response.data.message);
                    }
                }
            });
        });
    });
    </script>

    <?php
    return ob_get_clean();
}

add_action('wp_ajax_sc_custom_request_send', 'sc_custom_request_send');
add_action('wp_ajax_nopriv_sc_custom_request_send', 'sc_custom_request_send');

function sc_custom_request_send() {
    check_ajax_referer('sc_custom_request_nonce', 'nonce');

    $name = isset($_POST['name']) ? sanitize_text_field($_POST['name']) : '';
    $phone = isset($_POST['phone']) ? sanitize_text_field($_POST['phone']) : '';

    if (empty($name) || empty($phone)) {
        wp_send_json_error(array(
            'message' => 'Заполните имя и телефон.'
        ));
    }

    wp_send_json_success(array(
        'message' => 'Заявка отправлена.'
    ));
}

Что показывает этот пример

  • плагин не зависит от темы;
  • шорткод можно вставить на любую страницу;
  • AJAX-запрос идёт через admin-ajax.php;
  • данные очищаются через sanitize_text_field();
  • запрос защищён nonce-проверкой;
  • ответ возвращается в JSON-формате.

Результат

После разработки нормального плагина сайт получает отдельный управляемый модуль. Его можно включить, выключить, перенести, обновить и доработать без хаоса в functions.php.

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

Что должно быть в готовом плагине

  • понятная структура файлов;
  • безопасная обработка входных данных;
  • проверка прав пользователя;
  • защита AJAX-запросов через nonce;
  • отдельные CSS и JS-файлы, если проект больше простого примера;
  • логирование ошибок, если есть импорт, API или cron;
  • админ-страница настроек, если параметры должны меняться без кода;
  • корректное удаление временных данных при деактивации или удалении;
  • совместимость с кешем и обновлениями WordPress.

Дополнительные способы

Не всегда нужно сразу писать большой плагин с нуля. Иногда дешевле и безопаснее выбрать другой путь.

Вариант 1: доработка существующего плагина

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

Вариант 2: маленький служебный плагин

Подходит, если нужно вынести код из functions.php, чтобы он не пропал после смены темы.

Вариант 3: полноценный кастомный плагин

Подходит для CRM-логики, личных кабинетов, отчётов, интеграций, импорта, WooCommerce-доработок и сложных бизнес-процессов.

Вариант 4: mu-plugin

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

Сколько стоит разработка WordPress-плагина

Цена зависит не от количества строк кода, а от сложности логики, количества интеграций, рисков и тестирования. Плагин с одной формой и уведомлением — это одна задача. Плагин с импортом Excel, личным кабинетом, ролями, отчётами и cron — совсем другой объём.

Тип задачи Что входит Что влияет на цену
Маленький плагин Шорткод, форма, простая настройка Количество полей, проверок и уведомлений
Средний плагин AJAX, админка, роли, сохранение данных Права доступа, таблицы, фильтры, безопасность
Интеграция API, CRM, Telegram, Google, платёжные сервисы Документация API, авторизация, обработка ошибок
Сложный модуль Отчёты, импорт, экспорт, cron, личный кабинет Объём данных, производительность, тестирование

Если нужно понять бюджет шире, полезно посмотреть, сколько стоит доработка сайта на WordPress. Это помогает отделить простую правку от полноценной разработки отдельного модуля.

Частые ошибки

Писать всё в functions.php

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

Не проверять права пользователя

Если AJAX-обработчик доступен всем, пользователь без нужных прав может выполнить действие, которое должно быть доступно только администратору или менеджеру.

Не очищать входные данные

Все данные из POST, GET, COOKIE и внешних API нужно проверять и очищать. Для SQL-запросов нужно использовать $wpdb->prepare().

Смешивать HTML, SQL, JS и бизнес-логику в одной функции

Такой код сложно читать и опасно дорабатывать. Лучше разделять вывод, обработку данных, AJAX и работу с базой.

Не учитывать кеш

Кеш может скрыть результат AJAX, старые данные, устаревший HTML или конфликт скриптов. Особенно это важно для WooCommerce, личных кабинетов и динамических форм.

Не тестировать обновления

Плагин может работать сегодня, но сломаться после обновления PHP, WordPress, WooCommerce или темы. Поэтому для важных сайтов нужна тестовая копия.

Диагностика проблем

Если после установки плагина сайт начал работать неправильно, диагностику нужно делать спокойно и по шагам.

Сайт показывает критическую ошибку

  • включить WP_DEBUG на тестовой копии;
  • проверить файл wp-content/debug.log;
  • посмотреть последнюю ошибку PHP;
  • отключить плагин через FTP, если админка недоступна;
  • проверить совместимость версии PHP.

AJAX не работает

  • открыть DevTools в браузере;
  • проверить вкладку Network;
  • найти запрос admin-ajax.php;
  • посмотреть код ответа: 200, 400, 403, 500;
  • проверить action, nonce и PHP-обработчик.

Данные не сохраняются

  • проверить sanitize и валидацию;
  • проверить имя option или таблицы;
  • проверить права текущего пользователя;
  • проверить SQL-запрос через $wpdb->last_error;
  • убедиться, что форма отправляет нужные поля.

Плагин замедляет сайт

  • проверить, не выполняются ли тяжёлые запросы на каждой странице;
  • перенести тяжёлые операции в cron или AJAX;
  • добавить кеширование результатов;
  • не загружать CSS и JS там, где они не нужны;
  • проверить медленные SQL-запросы;
  • не запускать импорт, API-запросы и пересчёты при каждом открытии страницы.

Практические требования к хорошему ТЗ

Для разработки плагина под заказ лучше давать не общее описание “сделать удобно”, а конкретный сценарий.

Что указать в ТЗ

  • какая проблема сейчас есть на сайте;
  • кто будет пользоваться функцией;
  • какие данные вводятся;
  • какие данные должны сохраняться;
  • что должно отображаться в админке;
  • что должно отображаться на фронтенде;
  • нужен ли импорт или экспорт;
  • нужны ли email, Telegram или CRM-уведомления;
  • какие плагины уже установлены;
  • какие ошибки уже были замечены.

Плохой пример ТЗ

“Нужно сделать плагин для заявок, чтобы всё работало красиво”.

Хороший пример ТЗ

“Нужно создать форму заявки с полями имя, телефон, услуга. После отправки заявка сохраняется в админке, отправляется на email и в Telegram. Менеджер может менять статус заявки: новая, в работе, закрыта. На странице выводится шорткод формы”.

Безопасность

Безопасность в кастомном WordPress-плагине нельзя оставлять “на потом”. Даже маленькая форма может стать проблемой, если данные не очищаются и не проверяются.

Что обязательно использовать

  • sanitize_text_field() для простого текста;
  • sanitize_email() для email;
  • esc_html() для вывода текста;
  • esc_url() для ссылок;
  • wp_nonce_field() и check_ajax_referer() для защиты форм и AJAX;
  • current_user_can() для проверки прав;
  • $wpdb->prepare() для SQL-запросов;
  • валидацию файлов при загрузке;
  • ограничение доступа к админским действиям.

Производительность

Плагин под заказ не должен запускать тяжёлую логику на каждой странице сайта. Частая ошибка — подключить обработчики глобально и потом удивляться, почему медленно работает главная, каталог или wp-admin.

Что помогает не замедлить сайт

  • подключать CSS и JS только на нужных страницах;
  • использовать индексы в кастомных таблицах;
  • не делать API-запросы при каждой загрузке страницы;
  • кешировать тяжёлые выборки;
  • обрабатывать большие импорты порциями;
  • логировать ошибки, но не писать огромные логи бесконтрольно;
  • не хранить временные данные в autoload options, если их много.

FAQ

Что лучше: готовый плагин или разработка под заказ?

Если задача стандартная, лучше начать с готового плагина. Если нужна своя логика, интеграция, нестандартные роли, отчёты, импорт или расчёты, лучше делать отдельный плагин.

Можно ли доработать уже установленный плагин?

Да, но не всегда правильно менять файлы чужого плагина напрямую. После обновления такие правки могут пропасть. Безопаснее использовать hooks, filters, дочерний модуль или отдельный плагин-надстройку.

Почему нельзя всё вставить в functions.php?

Можно, если это маленькая временная правка. Но для бизнес-логики, AJAX, интеграций, отчётов и настроек лучше делать отдельный плагин. Так код проще поддерживать и переносить.

Нужна ли тестовая копия сайта?

Да, если плагин влияет на оплату, заказы, пользователей, доступы, email, базу данных или админку. На рабочем сайте такие задачи лучше не тестировать.

Можно ли сделать плагин только для одного сайта?

Да. Часто кастомный плагин разрабатывается именно под один сайт и его бизнес-процесс. Главное — не привязывать код к случайным ID без необходимости.

Что влияет на срок разработки?

Сложность логики, качество ТЗ, наличие API-документации, состояние сайта, количество ролей, объём данных, необходимость тестирования и риск влияния на заказы или оплату.

Можно ли сделать админку для настроек плагина?

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

Что делать, если после установки плагина сайт сломался?

Нужно отключить плагин через админку или FTP, включить debug.log, посмотреть ошибку PHP и проверить конфликт с темой или другими плагинами.

Можно ли обновлять WordPress после разработки плагина?

Да, но для важных сайтов обновления лучше сначала проверять на staging-копии. Особенно если плагин связан с WooCommerce, оплатой, LMS, CRM или личным кабинетом.

Вывод

Разработка WordPress-плагинов под заказ нужна тогда, когда сайту требуется не просто “ещё одна функция”, а стабильная бизнес-логика: заявки, интеграции, отчёты, импорт, WooCommerce-доработки, личные кабинеты или автоматизация процессов.

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

Об авторе

vkuzyomko administrator