Добавьте прогрессивную надбавку на основе стран в Woocommerce - PullRequest
0 голосов
/ 03 декабря 2018

Могу ли я использовать оператор if и если да, то как?В основном, я хочу добавить 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

?

1 Ответ

0 голосов
/ 03 декабря 2018

Да, вы можете добавить много условий для получения разных сумм комиссии, но поскольку ваши страны находятся в массиве, вы будете использовать 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 вашей активной дочерней темы (или активной темы).Проверено и работает.

...