我的Woocommerce网站处于独特的境地。
我需要加一个包装费,这与手续费有些相似。
不幸的是,这并不像为每个订单增加5.00美元的手续费那么简单。
由于我根据其尺寸(宽x高)销售木制品,因此包装费基于商品的总面积。它们也可以根据项目的类别而有所不同。
我做了大量的研究,但是我找不到一个插件来处理这种情况。
为了增加复杂性,需要创建一个完整的表。例如,如果来自一个类别的项目的总面积在1-10之间,则包装费用将 $ 10 。如果总平方英尺在11-20之间,那么它将 $ 20 。
我该如何做到这一点?
由于
答案 0 :(得分:1)
已更新:已添加WooCommerce 3+兼容性
使用 woocommerce_cart_calculate_fees
挂钩中的add_fee()
方法,这是可行且轻松。以下是简单产品的简单用法示例,包含2个类别,并基于购物车每个项目的产品尺寸测量计算。它也适用于其他产品类型。
以下是示例代码(您需要根据自己的情况进行自定义):
add_action( 'woocommerce_cart_calculate_fees','custom_applied_fee', 10, 1 );
function custom_applied_fee( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Set HERE your categories (can be an ID, a slug or the name… or an array of this)
$category1 = 'plain';
$category2 = 'plywood';
// variables initialisation
$fee = 0;
$coef = 1;
// Iterating through each cart item
foreach( $cart_object->get_cart() as $cart_item ){
$product_id = version_compare( WC_VERSION, '3.0', '<' ) ? $cart_item['data']->id : $cart_item['data']->get_id();
$product = $cart_item['data']; // Get the product object
// Get the dimentions of the product
$height = $product->get_height();
$width = $product->get_width();
// $length = $product->get_length();
// Initialising variables (in the loop)
$cat1 = false; $cat2 = false;
// Detecting the product category and defining the category coeficient to change price (for example)
// Set here for each category the modification calculation rules…
if( has_term( $category1, 'product_cat', $cart_item['product_id']) )
$coef = 1.15;
if( has_term( $category2, 'product_cat', $cart_item['product_id']) )
$coef = 1.3;
// ## CALCULATIONS ## (Make here your conditional calculations)
$dimention = $height * $with;
if($dimention <= 10){
$fee += 10 * $coef;
} elseif($dimention > 10 && $dimention <= 20){
$fee += 20 * $coef;
} elseif($dimention > 20){
$fee += 30 * $coef;
}
}
// Set here the displayed fee text
$fee_text = __( 'Packaging fee', 'woocommerce' );
// Adding the fee
if ( $fee > 0 )
WC()->cart->add_fee( $fee_text, $fee, false );
// Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false)
}
您必须使用每个类别的相关更改计算设置自己的类别。考虑到购物车中的每件商品,您将获得非详细的一般产出费用。
代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。
代码已经过测试并且功能齐全。
相关答案: