Изменение порядка нескольких сборов в корзине Woocommerce и на страницах оформления заказа - PullRequest
0 голосов
/ 21 сентября 2018

При добавлении нескольких комиссий к оформлению заказа в woocommerce, можно ли расставить приоритеты в порядке их заказа?В настоящее время похоже, что woocommerce упорядочивает их по величине комиссии, например: Комиссия 1 = £ 10,00, Комиссия 2 = £ 20,00, они будут упорядочены следующим образом:

  • Итого
  • Комиссия 2 = £ 20,00
  • Комиссия 1 = £ 10,00
  • Итого

Возможно ли вообще иметь индивидуальный заказ?Может быть, добавление приоритета к действию, к которому привязана плата?Я бы хотел, чтобы Fee 2 всегда был последним пунктом оплаты.

Это достижимо?

1 Ответ

0 голосов
/ 21 сентября 2018

В Woocommerce Тарифы обрабатываются классом WC_Cart_Fee, и если вы посмотрите на исходный код метода get_fees(), вы увидите, что сортировка выполненапо сумме комиссии в sort_fees_callback() с функцией сортировки uasort() php.

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

1) Плата за сортировку по имени: Сначала приведем пользовательскую функцию для сортировки сборов по имени метки:

function wc_get_sorted_fees(){
    $fees = WC()->cart->get_fees();
    ksort($fees);
    return $fees;
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

2) Отображение - переопределение шаблонов cart/cart-totals.php и checkout/review-order.php.

В обоих файлах шаблонов вы замените строку:

<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>

1042 *
...