php 免费送货的100第一个客户在Woocommerce

3bygqnnd  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(140)

我试图在Woocommerce找到一种方法,允许免费送货的前100名客户作为促销活动。
一旦达到100个第一客户的限制,则将适用标准航运。
这可能吗?我怎么能做到?

wj8zmpe1

wj8zmpe11#

这里是一个简单的方法来做到这一点与下面的2挂钩函数,将:
1.自动添加优惠券代码到购物车“免费送货”选项启用到第100个客户.
1.当“免运费”可用时隐藏其他送货方式。

但你将拥有

  • 在WooCommerce〉设置〉运输中,为每个运输区域设置一个“免运费”方法,并选择以下选项之一:
  • 有效的免费送货优惠券
  • 最低订单金额或优惠券
  • 要在WooCommerce〉优惠券之前使用以下设置设置特殊的优惠券代码:
  • 一般〉折扣类型:固定推车
  • 常规〉金额:0
  • 常规〉允许免费送货:使能
  • 使用限制〉每张优惠券的使用限制:100
  • 使用限制〉每个用户的使用限制:1

下面是代码:

// Auto apply "free_shipping" coupon for first hundred
add_action( 'woocommerce_before_calculate_totals', 'auto_apply_free_shipping_coupon_first_hundred', 20, 1 );
function auto_apply_free_shipping_coupon_first_hundred( $cart ) {

    // HERE define  your free shipping coupon code
    $coupon_code = 'summer';// 'freeship100';

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Get an instance of the WC_Coupon object
    $coupon = new WC_Coupon( $coupon_code );

    // After 100 usages exit
    if( $coupon->get_usage_count() > 100 ) return;

    // Auto-apply "free shipping" coupon code
    if ( ! $cart->has_discount( $coupon_code ) && is_cart() ){
        $cart->add_discount( $coupon_code );
        wc_clear_notices();
        wc_add_notice( __('You have win Free shipping for the first 100 customers'), 'notice');
    }
}

// Hide Others Shipping methods when "Free shipping is available
add_filter( 'woocommerce_package_rates', 'hide_others_when_free_shipping_is_available', 100 );
function hide_others_when_free_shipping_is_available( $rates ) {
    $free = array();
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'free_shipping' === $rate->method_id ) {
            $free[ $rate_id ] = $rate;
            break;
        }
    }
    return ! empty( $free ) ? $free : $rates;
}

代码在你的活动子主题(或主题)的function.php文件中,或者也可以在任何插件文件中。
此代码经过测试,适用于WooCommerce版本3+

相关问题