Я новичок здесь, хотя я использую веб-сайт в течение нескольких месяцев, чтобы получить помощь от других вопросов.
Я пытаюсь добавить плату в woocommerce следующим образом:
Сайт должен проверить корзину, найти продукты, соответствующие идентификатору категории, рассчитать процентную комиссию за каждый из этих продуктов, суммировать их и взимать плату.
Пока мне удалось проверить корзину, найти продукты, соответствующие категории (получив их количество), и умножить сумму на фиксированную плату.
Как видите, если у меня есть 3 продукта, соответствующих критериям (идентификатор категории) по цене 50, 40 и 30 фунтов стерлингов, комиссия будет составлять 3*10 (фиксированная комиссия — 10).
Чего я действительно хочу, так это того, чтобы сайт рассчитывал процентную комиссию от этих продуктов (50 * 10, 40 * 10, 30 * 10) и суммировал их (500 + 400 + 300). Очевидно, что не все продукты будут иметь одинаковую цену.
Вот мой код:
function df_add_handling_fee( $cart_object ) {
global $woocommerce;
$specialfeecat = 61; // category id for the special fee
$spfee = 0.00; // initialize special fee
$spfeeperprod = 10; //special fee per product
//Getting Cart Contents.
$cart = $woocommerce->cart->get_cart();
//Calculating Quantity
foreach($cart as $cart_val => $cid){
$qty += $cid['quantity'];
}
foreach ( $cart_object->cart_contents as $key => $value ) {
$proid = $value['product_id']; //get the product id from cart
$quantiy = $value['quantity']; //get quantity from cart
$itmprice = $value['data']->price; //get product price
$terms = get_the_terms( $proid, 'product_cat' ); //get taxonomy of the products
if ( $terms && ! is_wp_error( $terms ) ) :
foreach ( $terms as $term ) {
$catid = $term->term_id;
if($specialfeecat == $catid ) {
$spfee = $spfee + $quantiy * $spfeeperprod;
}
}
endif;
}
if($spfee > 0 ) {
$woocommerce->cart->add_fee( 'Handling Fee', $spfee, true, 'standard' );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'df_add_handling_fee' );
Спасибо!