基于 WooCommerce 中购物车小计百分比的累进统一费率

在 WooCommerce 中,我尝试根据购物车小计的 10% 设置渐进运输成本,最低成本为 5 美元,最高成本为 11 美元。


这是我的代码尝试:


add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates', 10, 2 );

function woocommerce_package_rates( $rates, $package ) {

    // Make sure flat rate is available

    if ( isset( $rates['flat_rate:24'] ) ) {

        // Set the cost to $5

        $rates['flat_rate:24']->cost = 5;

    }

    $cart_subtotal = $WC()->cart->subtotal

    if ($cart_subtotal >50)


    $percentage = 0.10;  // Percentage (10%) in float

    $percentage_fee = ( WC()->cart->subtotal >+ WC()->cart->get_shipping_total()) * $percentage;

    }

 

    });

    return $rates;

}

此代码在网站上给出了严重错误。我对 WordPress 自定义编码很陌生,您可能会从下面的代码中看出。


另外,我希望显示的标签显示“USPS”而不是“统一费率”。


例如,如果购物车小计为 60 美元,则他们需要支付 6 美元的统一运费(小计的 10%)。


我错过了什么或做错了什么?


长风秋雁
浏览 61回答 1
1回答

缥缈止盈

您提供的代码中有很多错误...以下内容将允许您根据购物车小计百分比设置从5$到最大值的运费。11$首先,您需要在统一费率设置中设置成本5(以及“UPS”作为标签)。然后使用这段代码:add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates', 10, 2 );function woocommerce_package_rates( $rates, $package ) {&nbsp; &nbsp; $max_cost&nbsp; &nbsp;= 11; // Here set the max cost for the shipping method&nbsp; &nbsp; $percentage = 10; // Percentage to apply on cart subtotal&nbsp; &nbsp; $subtotal&nbsp; &nbsp;= WC()->cart->get_subtotal(); // Cart subtotal without taxes&nbsp; &nbsp; // Loop through shipping rates&nbsp; &nbsp; foreach ( $rates as $rate_key => $rate ) {&nbsp; &nbsp; &nbsp; &nbsp; // Targetting specific flate rate shipping method&nbsp; &nbsp; &nbsp; &nbsp; if ( 'flat_rate:14' === $rate_key ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $has_taxes = false;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $base_cost = $rate->cost; // 5$ from this shipping method cost setting&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $new_cost&nbsp; = $subtotal * $percentage / 100; // Calculation&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $new_cost > $base_cost ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 1. Rate cost&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( $new_cost < $max_cost ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rates[$rate_key]->cost = $new_cost;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rate_operand = $new_cost / $base_cost; // (for taxes if enabled)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rates[$rate_key]->cost = $max_cost;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rate_operand = $max_cost / $base_cost; // (for taxes if enabled)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 2. Taxes rate cost (if enabled)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($rates[$rate_key]->taxes as $key => $tax){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $tax > 0 ){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // New tax calculated cost&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $taxes[$key] = $tax * $rate_operand;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $has_taxes = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Set new taxes cost&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( $has_taxes ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $rates[$rate_key]->taxes = $taxes;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return $rates;}代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。刷新运输缓存:此代码已保存在您的functions.php 文件中。在运输区域设置中,禁用/保存任何运输方式,然后启用返回/保存。你已经完成了,你可以测试它。
打开App,查看更多内容
随时随地看视频慕课网APP