Отображать пользовательское сообщение, если общее значение настраиваемых полей достигает определенного значения

У меня есть настраиваемое поле для каждого простого продукта, то есть объем (в м3) пункта

Я хотел бы показать пользователю сообщение о том, что объем их заказа не достиг 68 м3 (объем 40-футового контейнера). Я повторно использовал некоторый код из другой функции, которая суммирует значения тома из настраиваемого поля _item_volume,

Как отобразить сообщение, когда значение достигло 68 м3?

// Loop through cart items and calculate total volume
foreach( WC()->cart->get_cart() as $cart_item ){
$product_volume = (float) get_post_meta( $cart_item['product_id'], '_item_volume', true );
$total_volume  += $product_volume * $cart_item['quantity'];
}

3

Решение

Попробуйте выполнить следующее, в котором будет отображаться пользовательское уведомление, если общий объем корзины не достиг 68 м3:

add_action('woocommerce_before_calculate_totals', 'display_custom_notice', 50, 1);
function display_custom_notice( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;

$total_volume = 0;

// Loop through cart items and calculate total volume
foreach( WC()->cart->get_cart() as $cart_item ){
$product_volume = (float) get_post_meta( $cart_item['product_id'], '_item_volume', true );
$total_volume  += $product_volume * $cart_item['quantity'];
}
if( $total_volume < 68 && $total_volume != 0 ){
// Display a custom notice
wc_add_notice( __("Note: Your order total volume has not reached 68 m3", "woocommerce"), 'notice' );
}
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]