WooCommerce根据数量收取额外费用

WooCommerce根据数量收取额外费用,woocommerce,cart,checkout,fee,Woocommerce,Cart,Checkout,Fee,以下是我想要实现的过程: 1.产品页面上有一个复选框,用户可以决定是否在产品旁边添加自定义服务 2.如果用户选中此框,则会向购物车添加自定义费用,但这是基于产品数量的 e、 g:如果用户向购物车添加了2个相同的产品,并且选中了复选框,则会自动向购物车添加2倍的自定义费用 有人能帮我吗?(我尽量少使用插件,所以尽量通过php代码段实现这一点) 这是我的代码(它将自定义费用添加一次): 假设你是这个意思 //添加到购物车数量前添加复选框 功能转移费(){ 如果(有术语(“转移”、“产品类别”)){

以下是我想要实现的过程: 1.产品页面上有一个复选框,用户可以决定是否在产品旁边添加自定义服务 2.如果用户选中此框,则会向购物车添加自定义费用,但这是基于产品数量的 e、 g:如果用户向购物车添加了2个相同的产品,并且选中了复选框,则会自动向购物车添加2倍的自定义费用

有人能帮我吗?(我尽量少使用插件,所以尽量通过php代码段实现这一点)

这是我的代码(它将自定义费用添加一次):


假设你是这个意思

//添加到购物车数量前添加复选框
功能转移费(){
如果(有术语(“转移”、“产品类别”)){
echo“添加转账(1美元/人)”;
}否则{
回声“无传输”;
}
}
添加操作(“添加到购物车数量之前的“woocommerce”、“转移费”);
//添加购物车元数据。
功能存储\转移\费用($cart\项目\数据,$product\ id,$VARIANCE\ id){
如果(isset($_POST['transfer'])){
$cart_item_data['transfer']=$u POST['transfer'];
}
返回$cart\u item\u数据;
}
添加过滤器('woocommerce\u add\u cart\u item\u data','store\u transfer\u fee',10,3);
//计算费用
函数添加\结帐\转账\费用($cart\对象){
if(定义了('DOING'uajax'))
返回;
foreach(WC()->cart->get_cart()作为$cart\u item\u key=>$cart\u item){
如果(isset($cart_item['transfer'])){
$itsagift=true;
//获取数量
$quantity=$cart_项目['quantity'];
打破
}
}
//固定费用
$fee=1;
//真的
如果($itsagift){
WC()->cart->add_fee('Transfer',$fee*$quantity);
}
}
添加操作('woocommerce\u cart\u calculate\u fees','add\u checkout\u transfer\u fee',10,1);

你的工作不仅仅是找人帮你完成这项工作。你要么需要雇佣一个承包商,要么至少开始工作,提供你目前拥有的代码片段,然后我们可以提供帮助。哦,就是这个!非常感谢你的帮助!
<?php
function transfer_fee() {
    if ( has_term( 'transfer', 'product_cat' ) ) {
        echo '<label><input type="checkbox" name="transfer" value="No">Add transfer (1 USD / person)</label>';
    } elseif {
        echo 'No transfer';
    }
}
add_action( 'woocommerce_before_add_to_cart_quantity', 'transfer_fee' );

function store_transfer_fee( $cart_item, $product_id ) {
    if( isset( $_POST['transfer'] ) ) $cart_item['transfer'] = $_POST['transfer'];
     return $cart_item;
}
add_filter( 'woocommerce_add_cart_item_data', 'store_transfer_fee', 10, 2 );

function add_checkout_transfer_fee() {
     foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
                if ( isset( $cart_item['transfer'] ) ) {
                        $itsagift = true;
                        break;
                }
        }
        if ( $itsagift == true ) WC()->cart->add_fee( 'Transfer', 1 );
}
add_action( 'woocommerce_cart_calculate_fees', 'add_checkout_transfer_fee' );
?>