Php 如何使用美元金额变量在电子商务中应用自动折扣

Php 如何使用美元金额变量在电子商务中应用自动折扣,php,wordpress,woocommerce,shopping-cart,Php,Wordpress,Woocommerce,Shopping Cart,在我试图找到基于美元金额的自动优惠券的解决方案时,我遇到了以下问题。首先是规则: 如果美元金额低于53,什么也不做 如果美元金额大于53但小于90,则应用“couponX” 如果美元金额大于90,则应用“couponY” 我已经能够让代码使用代码的第二(2)条规则。但是,第三条规则将不适用。下面是我的代码。有什么想法吗 // Add coupon when user views cart before checkout add_action('woocommerce_before_cart_ta

在我试图找到基于美元金额的自动优惠券的解决方案时,我遇到了以下问题。首先是规则:

  • 如果美元金额低于53,什么也不做
  • 如果美元金额大于53但小于90,则应用“couponX”
  • 如果美元金额大于90,则应用“couponY”
  • 我已经能够让代码使用代码的第二(2)条规则。但是,第三条规则将不适用。下面是我的代码。有什么想法吗

    // Add coupon when user views cart before checkout
    add_action('woocommerce_before_cart_table', 'add_coupon_automatically');
    add_action('woocommerce_before_checkout_form', 'add_coupon_automatically');
    
    // Check if function? create it.
    if (!function_exists('add_coupon_automatically')) {
    function add_coupon_automatically() {
    global $woocommerce;
    $eleven = '20plus';
    $four = '10plus';
    $eleven_minimum = 179;
    $four_minimum = 89;
    
    if($woocommerce->cart->get_cart()->cart_contents_total>$eleven_minimum) {
    // Apply 20plus
    if (!$woocommerce->cart->add_discount( sanitize_text_field( $eleven )))
    $woocommerce->add_message('20 Plus coupon (11%) automatically applied!');
    $woocommerce->show_messages();
    //Recalculate totals
     $woocommerce->cart->calculate_totals();
    } elseif ($woocommerce->cart->get_cart()->cart_contents_total<$eleven_minimum 
      && $woocommerce->cart->get_cart()->cart_contents_total>$four_minimum) {
    // Apply 10plus
    if (!$woocommerce->cart->add_discount( sanitize_text_field( $four )))
    $woocommerce->add_message('10 Plus coupon (4%) automatically applied!');
    $woocommerce->show_messages();
    //Recalculate totals
    $woocommerce->cart->calculate_totals();
    }
    } 
    }
    
    //用户在结账前查看购物车时添加优惠券
    添加操作(“在购物车表之前添加商品”,“自动添加优惠券”);
    添加操作(“在结帐前添加商业”、“自动添加优惠券”);
    //检查功能是否正常?创造它。
    如果(!函数_存在('自动添加_优惠券_')){
    功能自动添加优惠券(){
    全球商业;
    十一元=二十元以上;
    四美元=10美元以上;
    最低11美元=179美元;
    $4_最低=89;
    如果($woocommerce->cart->get_cart()->cart_contents_total>$11_minimum){
    //申请20多个
    如果(!$woocommerce->cart->添加折扣(清理文本字段($11)))
    $woocommerce->add_消息('20+自动应用优惠券(11%));
    $woocommerce->show_messages();
    //重新计算总数
    $woocommerce->cart->calculate_totals();
    }elseif($WOOMerce->cart->get_cart()->cart_contents\u totalcart->get_cart()->cart_contents\u total>最少四美元){
    //申请10+以上
    如果(!$woocommerce->cart->添加折扣(清理文本字段($4)))
    $woocommerce->add_消息('10+自动应用优惠券(4%));
    $woocommerce->show_messages();
    //重新计算总数
    $woocommerce->cart->calculate_totals();
    }
    } 
    }
    
    做得不对。似乎最好的方法是基于购物车项目数量而不是价格

    新规则:

  • 创建数量至少为10/20的优惠券
  • 添加到
    child\u主题/woocommerce/cart.php

    global $count_cart_quantity;
    $count_cart_quantity = $woocommerce->cart->cart_contents_count;
    
  • 最后通过钩子应用优惠券

    add_action('woocommerce_before_cart_table', 'discount_20');
    function discount_20() {
    global $woocommerce;
    global $count_cart_quantity;
    if ( $count_cart_quantity > 19 ) {
    $coupon_code = '20plus';
    if (!$woocommerce->cart->add_discount(sanitize_text_field($coupon_code))) {
        $woocommerce->show_messages();
    }
    echo '<div classs"woocommerce_message"><strong>
    You qualified for an 11% discount and it has been applied!</strong>
    </div>';
    }
    }
    
    add_action('woocommerce_before_cart_table', 'discount_10');
    function discount_10() {
    global $woocommerce;
    global $count_cart_quantity;
    if ( $count_cart_quantity < 20 && $count_cart_quantity > 9 ) {
    $coupon_code = '10plus';
    if (!$woocommerce->cart->add_discount(sanitize_text_field($coupon_code))) {
        $woocommerce->show_messages();
    }
    echo '<div classs"woocommerce_message"><strong>
    You qualified for an 4% discount and it has been applied!</strong>
    </div>';
    }
    }
    
    add_action('woocommerce_在购物车_表之前,'折扣_20');
    功能折扣(u 20){
    全球商业;
    全局$count\u cart\u数量;
    如果($count\u cart\u quantity>19){
    $优惠券代码='20plus';
    如果(!$woocommerce->cart->添加折扣(清理文本字段($优惠券代码))){
    $woocommerce->show_messages();
    }
    回声'
    您有资格享受11%的折扣,并且已申请!
    ';
    }
    }
    添加动作(“购物车表前的woocommerce”和“折扣10”);
    功能折扣_10(){
    全球商业;
    全局$count\u cart\u数量;
    如果($count\u cart\u数量<20&$count\u cart\u数量>9){
    $优惠券代码='10plus';
    如果(!$woocommerce->cart->添加折扣(清理文本字段($优惠券代码))){
    $woocommerce->show_messages();
    }
    回声'
    您有资格享受4%的折扣,并且已申请!
    ';
    }
    }
    
  • 现在它工作得很好

    你可以改变

    $woocommerce->cart->get_cart()->cart_contents_total
    

    然后你的功能就可以工作了

    $woocommerce->cart->cart_contents_total