Я хочу показать сообщение на основе зон доставки и только в том случае, если сумма в корзине меньше определенной суммы, например:
- Зона доставки 1 и сумма в корзине меньше 29 евро: это должен отображаться Текст 1
и - Зона доставки 2 и сумма корзины меньше 49 евро: должен отображаться Текст 2
Код: Выделить всё
add_action( 'woocommerce_cart_totals_after_shipping', 'shipping_notice_displayed', 20 );
add_action( 'woocommerce_review_order_after_shipping', 'shipping_notice_displayed', 20 );
function shipping_notice_displayed() {
if ( did_action( 'woocommerce_cart_totals_after_shipping' ) >= 2 ||
did_action( 'woocommerce_review_order_after_shipping' ) >= 2 ) {
return;
}
// Chosen Shipping Method
$chosen_shipping_zone_id = WC()->session->get( 'chosen_shipping_methods' )[0];
$chosen_shipping_zone = explode(':', $chosen_shipping_method_id)[0];
$cart_subtotal = WC()->cart->subtotal;
// Settings
$cart_maximum1 = 29;
$cart_maximum2 = 49;
// HERE define the cart maximum
if ( $cart_subtotal < $cart_maximum2 && $chosen_shipping_zone != 'Shipping Zone I' ) {
$cart_maximum = $cart_maximum1;
} elseif ( $cart_subtotal < $cart_maximum2 && $chosen_shipping_method == 'Shipping Zone I' ) {
$cart_maximum = $cart_maximum2;
}
// Display a message
if( isset($cart_maximum) ){
// The message
$message = sprintf( 'Above 29,00 € cart total save 5 €!' ,
is_cart() ? 'Maximum' : 'Max',
strip_tags( wc_price( $cart_maximum, array('decimals' => 2 ) ) )
);
// Display
echo ' '.$message.'';
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... hold-in-wo