WooCommerce: запрет на изменение товара при создании заказа в админке

Почему важно запретить изменение товара при создании заказа в WooCommerce

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

Диагностика проблемы: как понять, что товары изменяются при создании заказа

Если администратор или менеджер по продажам жалуется, что в заказах меняются цены или названия товаров, или заказ расходится с остатками на складе, стоит проверить, как реализовано добавление товаров:

  • Откройте админку WooCommerce, создайте новый заказ.
  • Добавьте товар в заказ вручную.
  • Попробуйте изменить цену или название товара в строке заказа.

Если эти поля редактируются, значит, пользователи могут вносить изменения, что не всегда безопасно.

Пошаговое решение: запрет редактирования товара при создании заказа

Чтобы запретить изменения, нужно отключить редактируемые поля для товаров в заказе в админке. Для этого добавим кастомный код в файл functions.php вашей темы или в отдельный плагин:

add_filter('woocommerce_admin_order_item_headers', 'disable_order_item_edit_headers', 10, 1); function disable_order_item_edit_headers($headers) {   // Убираем заголовки для редактирования цены и названия товаров   unset($headers['item_cost']);   unset($headers['item_name']);   return $headers; } add_action('woocommerce_before_order_itemmeta', 'disable_order_item_edit_fields', 10, 3); function disable_order_item_edit_fields($item_id, $item, $product) {   // Для каждого товара отключаем редактирование цены и названия   if (is_admin()) {     echo '<style>       .woocommerce_order_item_name input,       .woocommerce_order_item_cost input {         pointer-events: none;         background: #f4f4f4;         border: none;       }     </style>';   } }

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

Для запрета изменения количества добавьте:

add_filter('woocommerce_order_item_quantity_is_editable', '__return_false');

Как проверить, что запрет сработал

  1. Перейдите в админку WooCommerce → Заказы → Добавить новый заказ.
  2. Добавьте товар в заказ.
  3. Попробуйте кликнуть на название, цену или количество товара в строке заказа.
  4. Поля должны быть неактивны, нельзя редактировать значения.
  5. Сохраните заказ и проверьте, что данные товара не изменились.

Частые ошибки и как их исправить

  • Код не работает, поля всё ещё редактируются: Возможно, кэш браузера или плагина мешает. Очистите кэш и обновите страницу.
  • Стили не применяются: Убедитесь, что код с <style> вставлен внутри хука с проверкой is_admin(). Можно добавить стили через отдельный CSS-файл админки.
  • Изменение количества всё ещё доступно: Проверьте, что фильтр woocommerce_order_item_quantity_is_editable добавлен и возвращает false.
  • Конфликт с другими плагинами: Отключите подозрительные плагины, которые могут переопределять админские шаблоны WooCommerce.

Практические советы по безопасности и производительности

  • Не редактируйте напрямую файлы плагинов WooCommerce, используйте дочернюю тему или собственный плагин для кастомного кода.
  • Проверяйте совместимость кода с текущей версией WooCommerce и WordPress.
  • Используйте отладочные инструменты, например Query Monitor, чтобы выявлять конфликты хуков.
  • Если у вас много заказов и сложный бизнес-процесс, рассмотрите использование специализированных плагинов для управления заказами с ограничениями прав.

Сравнение способов запрета редактирования товаров в заказах WooCommerce

Метод Плюсы Минусы
Кастомный код в functions.php Быстро, бесплатно, гибко Требует навыков PHP, возможны конфликты
Плагин для управления ролями и правами Простая настройка, без кода Может быть избыточным, влияет на производительность
Использование сторонних плагинов для заказов (например, WooCommerce Admin Customization) Широкий функционал Платные решения, сложнее в поддержке
WooCommerce: автоматическое изменение стоимости товара при выборе вариаций
21.06.2026
Как отправлять JSON данные из WordPress внешним сервисам
14.04.2026
Оптимизация базы данных WordPress: удаление старых записей и оптимальная структура
03.04.2026
Как использовать WPCommunity для создания форума на WordPress
23.02.2026
Как настроить автообновления плагинов WordPress без рисков
16.01.2026