Нашёл ответ.
Сделал не большую функцию, которая возвращает количество уже совершенных покупок человеком на сайте. Работает без регистрации. Честно говоря, сам не совсем понимаю, когда он сохраняет сколько у кого заказов, главное что сохраняет.
function check_count() {
$id = get_current_user_id();
$count = wc_get_customer_order_count($id);
return $count;
}
$id = get_current_user_id(); - получить id человека.
$count = wc_get_customer_order_count($id); - узнаем количество заказов.
return $count; - возвращаем это количество.
Потом, чтобы выдать саму скидку, я сделал так.
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge');
function woocommerce_custom_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if(check_count() == 0)
{
$summ = $woocommerce->cart->subtotal;
$summ = ceil($summ / 100 * 20);
$woocommerce->cart->add_fee("Скидка за первый заказ: ", -$summ);
}
}
$summ = $woocommerce->cart->subtotal; - узнаем общую сумму всего заказа (не считая цену доставки, если такова есть).
$summ = ceil($summ / 100 * 20); - Цифра 20, это сколько выдать скидку в процентах. Если что, делайте свои вычисления. ceil() - чтобы округлить до целого.
$woocommerce->cart->add_fee("Скидка за первый заказ: ", -$summ); Ну это добавляем уже саму скидку, выглядит хорошо.
Пользуйтесь.