-3

我可以使用 if 语句吗?如果可以,如何使用?基本上,我希望它向 SE 国家/地区添加 27 作为附加费,向所有其他国家/地区添加 3 作为附加费。

这是原始代码

add_action( 'woocommerce_cart_calculate_fees','wc_add_surcharge' ); 
function wc_add_surcharge() { 
global $woocommerce; 

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

$county = array('US');
// change the $fee to set the surcharge to a value to suit
$fee = 27.00;

if ( in_array( WC()->customer->get_shipping_country(), $county ) ) : 
    $woocommerce->cart->add_fee( 'Surcharge', $fee, true, 'standard' );  
endif;
}

我可以添加:

if ( !county = 'SE')
$fee = 3
if ( county = 'SE')
$fee 27

?

4

1 回答 1

1

是的,您可以添加许多条件来获得不同的费用金额,但由于您的国家/地区位于数组中,您将使用in_array()php 函数而不是==.

IF使用/ELSE语句时有一种速记方式:

  • 正常方式:

    if ( 'SE' == $shipping_country )
        $fee = 27; // For Sweden
    else
        $fee = 3; // For others
    
  • 速记方式(相同)

    // The fee cost will be 27 for Sweden and 3 for other allowed countries
    $fee = 'SE' == $shipping_country ? 27 : 3; 
    

您的代码有点过时,所以这是一个重新审视的版本,包括您的条件:

add_action( 'woocommerce_cart_calculate_fees','wc_add_surcharge', 10, 1 ); 
function wc_add_surcharge( $cart ) { 
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) 
        return;

    $shipping_country = WC()->customer->get_shipping_country();
    $subtotal = WC()->cart->subtotal;

    // Defined fee amount based on countries
    $fee = 'SE' == $shipping_country ? 27 : 3;

    // Minimum cart subtotal
    $minimum = 300; 

    if ( $subtotal < $minimum ) { 
        $cart->add_fee( 'Surcharge', $fee, true );  
    }
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。

于 2018-12-03T12:22:47.000 回答