добавить сборы на корзину с атрибутом и количеством - PullRequest
0 голосов
/ 07 февраля 2020

Я хотел бы добавить дополнительные платежи в Woocommerce. Если в корзине есть несколько товаров с атрибутом «грузополучатель», возвращаются сборы только с одним product_ID. Как исправить проблему? (Извините за мой несовершенный Энгли sh :-D)

function woo_add_cart_fee(){
global $woocommerce;

if(is_admin() && !defined('DOING_AJAX'))
    return;

//Initialisation of costs
$consigne = 0.5;

//cart
$cart = $woocommerce->cart->get_cart();
foreach($cart as $product)
{
    $the_product = get_product($product['product_id']);

    //fee - products
    $nb_products = $product['quantity'];
    $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products;
}

//intergration fees

if( $activation_cost >= 0 )
{
    $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, '');
}

}
add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');

1 Ответ

0 голосов
/ 09 февраля 2020

Я нашел решение:

'function woo_add_cart_fee () {global $ woocommerce;

if(is_admin() && !defined('DOING_AJAX'))
    return;

//Initialisation des coûts
$consigne = 0.5;

//Parcours du panier
$cart = $woocommerce->cart->get_cart();
foreach($cart as $product)
{
    $the_product = get_product($product['product_id']);

    //Frais d'activation, un coût par produit
    $nb_products1 = $product['quantity'];
    $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products1;
    if(  $activation_cost >= 0  )
    {
        $nb_products = $nb_products + $nb_products1 ;
    }
}

//Application des coûts calculés

if( $nb_products >= 0 )
{
    $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, '');
}

} add_action (' woocommerce_cart_calculate_fees ',' woo_add_cart_fee '); «

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...