Я использую " Установить скидку в зависимости от количества заказов в WooCommerce " код ответа с некоторыми изменениями:
add_action('woocommerce_cart_calculate_fees' , 'discount_based_on_customer_orders', 10, 1);
function discount_based_on_customer_orders( $cart_object ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Getting "completed" customer orders
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => 'shop_order', // WC orders post type
'post_status' => 'wc-completed' // Only orders with status "completed"
) );
// Orders count
$customer_orders_count = count($customer_orders);
// The cart total
$cart_total = WC()->cart->cart_contents_total;
// First customer order
if( empty($customer_orders) || $customer_orders_count == 0 ){
$discount_text = __('First Order Discount', 'woocommerce');
$discount = 0 - ($cart_total * 0.5);
}
// 4th order discount
elseif( $customer_orders_count == 4 ){
$discount_text = __('4th Order Discount', 'woocommerce');
$discount = 0 - ($cart_total * 0.5);
}
// Apply discount
if( ! empty( $discount ) ){
// Note: Last argument is related to applying the tax (false by default)
$cart_object->add_fee( $discount_text, $discount, false);
}
}
У меня естьустановите для клиента первый и четвертый заказ, а также процент вместо фиксированной цены.
Я бы хотел применить это к пользовательской странице оформления заказа, используя что-то вроде:
<?php
if($discount == true){
?>
<tr class="table__row discount_row discountrow">
<th class="table__cell table__cell--head table__cell--item table__cell--regular" scope="row" data-title="Discount">Discount</th>
<td class="table__cell table__cell--quantity" data-title="QTY"></td>
<td class="table__cell table__cell--total table__cell--regular" data-title="Discount">£<span class="referral_discount">-<?php echo number_format($discount,2);?></span></td>
</tr>
<?php
}
?>
Как это можно сделать? Поэтому, если клиент соответствует требованиям, он добавляет правильные строки к оформлению заказа.