Разрешить бесплатную доставку в зависимости от минимальной промежуточной суммы отправляемых товаров с индикатором выполнPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Разрешить бесплатную доставку в зависимости от минимальной промежуточной суммы отправляемых товаров с индикатором выполн

Сообщение Anonymous »

Я хотел бы разделить различные условия вывода, используя фрагмент, который фильтрует общую сумму цены и тип продукта.
Я отредактировал код из предыдущего ответа на свой вопрос, добавив некоторые разные условия в конце:

[*]Отметьте, есть ли в кассе ТОЛЬКО ВСТРЕЧА, чтобы ничего не показывать или просто сообщение с благодарностью
[*]Если в корзине есть хотя бы один обычный товар (переменный или простой), отметьте, имеет ли оно значение =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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»