Как редактировать поля чека только для одного товара: Юкасса wordpress?

Ссылка скопирована
1 ответ

Сейчас ситуация такая: как в плагине юкасса для woocommerce сделать предмет расчёта и способ расчёта только для одного товара? В карточке редактирования товара - в блоке "данные товара" нет вкладки.

69bc3785454d2941487982.png

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

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

Если нужно изменить параметры только для одного товара, самый надёжный путь — фильтр плагина YooKassa или WooCommerce перед формированием чека. Конкретное имя фильтра зависит от версии YooKassa, поэтому сначала откройте файлы плагина и поищите:

grep -R "payment_subject|payment_mode|apply_filters" wp-content/plugins/yookassa*

grep -R "payment_subject|payment_mode|apply_filters" wp-content/plugins/yookassa*

Логика должна быть такая: при формировании позиции чека проверяете ID товара и подменяете значения только для него.

add_filter('yookassa_receipt_item_data', function ($item_data, $order_item, $order) {
    $product = $order_item->get_product();
 
    if (!$product) {
        return $item_data;
    }
 
    if ((int) $product->get_id() === 123) {
        $item_data['payment_subject'] = 'service';
        $item_data['payment_mode'] = 'full_payment';
    }
 
    return $item_data;
}, 10, 3);

add_filter('yookassa_receipt_item_data', function ($item_data, $order_item, $order) { $product = $order_item->get_product(); if (!$product) { return $item_data; } if ((int) $product->get_id() === 123) { $item_data['payment_subject'] = 'service'; $item_data['payment_mode'] = 'full_payment'; } return $item_data; }, 10, 3);

Это пример структуры, а не гарантированное имя фильтра: у вашей версии плагина оно может отличаться. Нужно ориентироваться по коду установленного плагина.

Если фильтра нет, можно хранить нужные значения в метаполях товара и дорабатывать формирование чека через hook, который плагин предоставляет для receipt/items. Не правьте файлы YooKassa напрямую: после обновления всё пропадёт.

Также проверьте тип товара. Для вариативного товара чек может формироваться по variation ID, а настройки Вы ищете у родительского товара. В таком случае нужно проверять и variation ID, и parent ID:

$product_id = $product->get_id();
$parent_id = $product->is_type('variation') ? $product->get_parent_id() : 0;

$product_id = $product->get_id(); $parent_id = $product->is_type('variation') ? $product->get_parent_id() : 0;

Итог: если UI-полей нет, задача решается через фильтр формирования позиций чека. Найдите актуальный hook в вашей версии YooKassa и подменяйте предмет/способ расчёта только для нужного product ID.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно