2017-04-15 38 views
4

你如何在WooCommerce稅收總額中的WordPress functions.php頁,使用:找車總稅額編程方式WooCommerce

global $woocommerce; 

$discount = $woocommerce->cart->tax_total; 

但沒有返回任何值。

如何獲得購物車稅總額?

本質上我想稅收爲用戶計算,但隨後它會減少,因爲客戶將支付COD的稅收。

全部下面的代碼:

add_action('woocommerce_calculate_totals', 'action_cart_calculate_totals', 10, 1); 
function action_cart_calculate_totals($cart_object) { 

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

    if (!WC()->cart->is_empty()): 
     $cart_object->cart_contents_total *= .10 ; 

    endif; 
} 


//Code for removing tax from total collected 
function prefix_add_discount_line($cart) { 

    global $woocommerce; 

    $discount = $woocommerce->cart->tax_total; 

    $woocommerce->cart->add_fee(__('Tax Paid On COD', 'your-text-domain') , - $discount); 

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

回答

3
  1. global $woocommerce; $woocommerce->cart購物車已過時。改爲使用WC()->cart
    在這裏,您可以使用,而不是直接$cart(對象)參數...
  2. 正確的屬性是taxes,而不是tax_total
  3. 是更好地使用WC_Cart get_taxes()方法這一翻譯成與WooCommerce 3.0以上版本

要達到什麼樣的你想你的代碼兼容將是:

// For Woocommerce 2.5+ (2.6.x and 3.0) 
add_action('woocommerce_cart_calculate_fees', 'prefix_add_discount_line', 10, 1); 
function prefix_add_discount_line($cart) { 

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

    $discount = 0; 
    // Get the unformated taxes array 
    $taxes = $cart->get_taxes(); 
    // Add each taxes to $discount 
    foreach($taxes as $tax) $discount += $tax; 

    // Applying a discount if not null or equal to zero 
    if ($discount > 0 && ! empty($discount)) 
     $cart->add_fee(__('Tax Paid On COD', 'your-text-domain') , - $discount); 
} 

代碼放在功能。你的活動兒童主題(或主題)的php文件或任何插件文件。

此代碼已經過測試並可正常工作。

+0

再次你真棒,謝謝 – DEVPROCB

1

您正在使用錯誤的函數名。正確的功能如下: -

WC()->cart->get_tax_totals(); 

而不是使用$ woocommerce-> cart-> tax_total;要獲得購物車總稅額,您可以通過從購物車總額中減去不含稅的購物車總額來完成此操作。如果你想獲得的所有稅收數組,那麼你可以在下面的代碼打通

$total_tax = floatval(preg_replace('#[^\d.]#', '', WC()->cart->get_cart_total())) - WC()->cart->get_total_ex_tax(); 

: - - :

您可以通過下面的代碼做到這一點

WC()->cart->get_taxes(); 
相關問題