2014-04-02 43 views
2

我試圖改變存在於woocommerce \公共功能的核心功能包括:\類-WC-coupon.php如何改變woocommerce

更改核心文件是不好的,因爲我不想讓每次更改核心文件我更新woocommerce,這就是爲什麼我想找到一種方法,我可以在我的主題functions.php文件中添加此功能的更新版本,以使其工作

這裏的核心功能

/** 
* Get discount amount for a cart item 
* 
* @param float $discounting_amount Amount the coupon is being applied to 
* @param array|null $cart_item Cart item being discounted if applicable 
* @param boolean $single True if discounting a single qty item, false if its the line 
* @return float Amount this coupon has discounted 
*/ 
public function get_discount_amount($discounting_amount, $cart_item = null, $single = false) { 
    $discount = 0; 

    if ($this->type == 'fixed_product') { 

     $discount = $discounting_amount < $this->amount ? $discounting_amount : $this->amount; 

     // If dealing with a line and not a single item, we need to multiple fixed discount by cart item qty. 
     if (! $single && ! is_null($cart_item)) { 
      // Discount for the line. 
      $discount = $discount * $cart_item['quantity']; 
     } 

    } elseif ($this->type == 'percent_product' || $this->type == 'percent') { 

     $discount = round(($discounting_amount/100) * $this->amount, WC()->cart->dp); 

    } elseif ($this->type == 'fixed_cart') { 
     if (! is_null($cart_item)) { 
      /** 
      * This is the most complex discount - we need to divide the discount between rows based on their price in 
      * proportion to the subtotal. This is so rows with different tax rates get a fair discount, and so rows 
      * with no price (free) don't get discounted. 
      * 
      * Get item discount by dividing item cost by subtotal to get a % 
      */ 
      $discount_percent = 0; 

      if (WC()->cart->subtotal_ex_tax) 
       $discount_percent = ($cart_item['data']->get_price_excluding_tax() * $cart_item['quantity'])/WC()->cart->subtotal_ex_tax; 

      $discount = min(($this->amount * $discount_percent)/$cart_item['quantity'], $discounting_amount); 
     } else { 
      $discount = min($this->amount, $discounting_amount); 
     } 
    } 

    // Handle the limit_usage_to_x_items option 
    if (in_array($this->type, array('percent_product', 'fixed_product')) && ! is_null($cart_item)) { 
     $qty = empty($this->limit_usage_to_x_items) ? $cart_item['quantity'] : min($this->limit_usage_to_x_items, $cart_item['quantity']); 

     if ($single) { 
      $discount = ($discount * $qty)/$cart_item['quantity']; 
     } else { 
      $discount = ($discount/$cart_item['quantity']) * $qty; 
     } 
    } 
    return $discount; 
} 

我要添加$discount = $discount * -1;return $discount;

感謝

回答

2

小晚,但在目前的版本WooCommerce 2.3.x版本,你可以使用過濾器「woocommerce_coupon_get_discount_amount」在你的主題對其進行過濾,以防止刪除您的更改更新。