Бывает иногда необходимо при расчете стоимости доставки добавить дополнительное поле для (pfand) депозит в Woocommerce. Например, если доставка осуществляется в паллете и он потом возвращается отправителю. Такое случилось и к меня, для одного магазина необходимо было добавить дополнительное поле для учета депозита, причем их было три (за стеклянную тару, за коробку и за паллет). Конечно, можно было найти и использовать какой-нибудь плагин, но это не наш путь)).
Что бы много не писать вот готовый код, который нужно вставить в function.php активной темы, ну или оформить в виде плагина.
add_action( 'woocommerce_cart_calculate_fees','woocommerce_pfand_kiste' );
function woocommerce_pfand_kiste() {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
global $woocommerce;
$shipcharge = 0;
$min = 289;
$stepqty = 96;
$stepeuro = 24;
$euroinitial = 96;
foreach( WC()->cart->get_cart() as $cart_item )
$shipcharge = $woocommerce->cart->cart_contents_count;
$eurototal = $euroinitial + floor(($shipcharge - $min) / $stepqty) * $stepeuro;
if($shipcharge < 240)
$woocommerce->cart->add_fee;
elseif($shipcharge < 289)
$woocommerce->cart->add_fee( 'Pfand Kiste (1.50€ pro Kiste)', 72 , false, '' );
else
$woocommerce->cart->add_fee( 'Pfand Kiste (1.50€ pro Kiste)', floor($eurototal) , false, '' );
}
Код получает количество товара в корзине и в зависимости от количества рассчитывает нужный депозит. Магазин, в котором это реализовано http://unverpackt-umgedacht.de/.
Вот так легко добавить депозит в Woocommerce.
Вопросы?