我试图让它,如果一个客户要添加一个优惠券代码(其中任何一个)的免费送货选项将消失和统一费率将被实施. -你会认为这将是一个容易的事情来实现,将有100的插件和方法描述来做到这一点,但我还没有找到任何.我不想支付$89插件做这一件事
一方奖金将是如果他们使用优惠券,但花费超过$249,他们仍然有资格免费送货。我读了一些在哪里如何做到这一点,但它需要我得到的职位ID,这与最新的WooCommerce是不可能像以前一样,我不知道运输ID,所以我在一个迷失这里是代码
add_filter( 'woocommerce_shipping_packages', function( $packages ) {
$applied_coupons = WC()->session->get( 'applied_coupons', array() );
if ( ! empty( $applied_coupons ) ) {
$free_shipping_id = 'free_shipping:2';
unset($packages[0]['rates'][ $free_shipping_id ]);
}
return $packages;
} );
谢谢
已编辑
add_filter( 'woocommerce_package_rates', 'coupons_removes_free_shipping',
10, 2 );
function coupons_removes_free_shipping( $rates, $package ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return $rates;
$min_total = 250; // Minimal subtotal allowing free shipping
// Get needed cart totals
$total_excl_tax = WC()->cart->get_total();
$discount_excl_tax = WC()->cart->get_discount_total();
// Calculating the discounted subtotal including taxes
$discounted_subtotal_incl_taxes = $total_excl_tax - $discount_excl_tax;
$applied_coupons = WC()->cart->get_applied_coupons();
if( sizeof($applied_coupons) > 0 && $discounted_subtotal_incl_taxes < $min_total ) {
foreach ( $rates as $rate_key => $rate ){
// Targeting "Free shipping"
if( 'free_shipping' === $rate->method_id ){
unset($rates[$rate_key]);
}
}
}
return $rates;
}
2条答案
按热度按时间j2qf4p5b1#
下面的代码将启用“免费送货”适用优惠券只有当购物车小计达到最低金额 (折扣含税):
代码进入你的活动子主题(或活动主题)的function.php文件。测试和工作。
原始答案:
下面的代码将删除“免费送货”送货方式时,任何优惠券是应用没有任何设置需要.有一些错误,在你的实际代码.尝试以下:
代码在你的活动子主题(或活动主题)的function.php文件中。
vtwuwzda2#
默认情况下,WooCommerce仍然允许选择免费送货方式,如果优惠券代码已填写并在购物车中激活。以下代码可以添加到您孩子的functions.php页面,如果使用了优惠券代码,可以勾住并隐藏任何免费送货选项。
只需将上面代码中的$free_shipping_id更改为您的免运费选项的ID。您可以通过转到WooCommerce〉设置〉运费选项找到您的ID,然后单击您的免运费选项。帖子ID将位于显示免运费详细信息/设置的页面的URL中。
在本例中,40107是配送ID。您的配送ID可能会有所不同。