超过特定金额时禁用COD

时间:2017-12-07 07:25:00

标签: wordpress woocommerce payment-gateway checkout

我需要禁用Woocommerce COD选项,并在总价超过一定金额时将其取消选中。

我尝试了这段代码,但什么也没做!

add_filter('woocommerce_available_payment_gateways', 'unsetting_payment_gateway', 10, 1);
function unsetting_payment_gateway( $available_gateways ) {
    global $woocommerce;
    $shipping_cost = WC()->cart->get_cart_shipping_total();
    $amount = $woocommerce->cart->cart_contents_total + $woocommerce->cart->tax_total + $shipping_cost;

  $max = 999.9 * WCPBC()->customer->exchange_rate;

    if($amount >= $max){   ?>
    <script type="text/javascript">
        jQuery(document).ready(function ($) {
          $("#payment_method_cod").disabled = true;
          $("#payment_method_cod").checked = false;       
        });       
    </script>    
    <?php
    add_action( 'woocommerce_review_order_before_payment', 'COD_exceed_amount_before_paying_notice' );
  }
    return $available_gateways;
}

function COD_exceed_amount_before_paying_notice() {
  wc_print_notice( __( 'COD amount exceeded!', 'woocommerce' ), 'notice' );
}

2 个答案:

答案 0 :(得分:0)

首先你需要取消注册woocommerce / assets / js / frontend / checkout.js

然后在主题资源文件夹中包含checkout.js,并在主题脚本文件

后再次注册

然后您的代码将按预期工作。

用于代码下方的注销,

wp_deregister_script($ handle);

再次注册,

wp_enqueue_script(参数);

答案 1 :(得分:-2)

您应该更改您的jquery代码。您可以尝试下面的代码并再次检查您的代码。因为那对我有用。

<script type="text/javascript">
        jQuery( document ).ready(function($) {          
          $("#payment_method_cod").prop('checked', false);                 
          $("#payment_method_cod").attr('disabled', true);        
        });       
    </script>