Я хотел бы разделить различные условия вывода, используя фрагмент, который фильтрует общую сумму цены и тип продукта.
Я отредактировал код из предыдущего ответа на свой вопрос, добавив некоторые разные условия в конце:
[*]Отметьте, есть ли в кассе ТОЛЬКО ВСТРЕЧА, чтобы ничего не показывать или просто сообщение с благодарностью
[*]Если в корзине есть хотя бы один обычный товар (переменный или простой), отметьте, имеет ли оно значение =50, чтобы отобразить индикатор выполнения
Я пытаюсь добавить некоторые дополнительные условия, чтобы не показывать индикатор выполнения (на сумму, оставшуюся для бесплатной доставки), пока есть только физические продукты на сумму cart->get_cart() as $item ) {
if ( ! $item['data']->is_type('custom') ) {
$others_found = true;
break;
}
}
return !$others_found;
}
// Filter shipping methods
add_filter( 'woocommerce_package_rates', 'ecommercehints_free_shipping_for_specific_products', 10, 2 );
function ecommercehints_free_shipping_for_specific_products( $rates, $package ) {
// check if there are only "appointment" product types in cart
if( has_only_appointments() ){
return $rates;
}
// If there is shippable products remove free shipping if cart subtotal is under specific amount
if ( WC()->cart->get_subtotal() < 50 ) {
unset( $rates['free_shipping:21'] ); // The targeted Free shipping method rate ID
}
return $rates;
}
// Show 'Spend another X amount' on checkout.
add_filter( 'woocommerce_checkout_before_order_review', 'ecommercehints_checkout_page_progress_bar', 10 );
function ecommercehints_checkout_page_progress_bar() {
$subtotal = WC()->cart->get_subtotal();
// check if there are only "appointment" product types in cart
if( has_only_appointments( WC()->cart->get_cart() ) ){
echo __("Thank you for your order", "woocommerce");
}
// HERE I WOULD CHECK IF THERE ARE NORMAL PRODUCT AND THE TOTAL AMOUNT OF THE NORMAL PRODUCTS (anything could be shipped) IS MORE THEN 50, FOR THE FREE SHIPPING
elseif ( $subtotal >= 50 ) {
echo __("Free shipping available", "woocommerce");
}
// HERE THE LAST TO SHOW THE PROGRESS BAR TO REACH THE FREE SHIPPING AMOUNT (again by checking if there are only phisical products)
elseif ( $subtotal < 50 ) {
printf( __('Spend another %s for free shipping!', 'woocommerce'), wc_price( 50 - $subtotal ) );
printf('
', intval($subtotal) );
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... ogress-bar
Разрешить бесплатную доставку в зависимости от минимальной промежуточной суммы отправляемых товаров с индикатором выполн ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как удалить расходы на доставку или изменить бесплатную доставку? [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-