Например, если предыдущий рекорд покупателя превышает 50 тыс., Он получает скидку 50%.
Вот мой код, который используется для получения текущей цены заказа клиента, но я хочу получить общую цену заказа:
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
global $woocommerce;
$coupon_code = '10percent'; // your coupon code here
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 500 ) {
$woocommerce->cart->add_discount( $coupon_code );
$woocommerce->show_messages();
}
}
$ user_id = get_current_user_id ();
$ string = wc_get_customer_total_spent ($ user_id);
echo $ string;
Вы могли бы использовать wc_get_customer_total_spent()
выделенная функция Woocommerce, но эта функция принимает статус оплаты всех заказов (которые «обрабатываются» и «завершены»).
Чтобы получить сумму всех покупок клиентов (только для статуса «выполненные» заказы), вы можете использовать этот простой и более легкий SQL на основе wc_get_customer_total_spent()
похожий исходный код это сделает свое дело:
global $wpdb;
$user_id = get_current_user_id(); // Current user ID
$user_purchases_total_sum = $wpdb->get_var( "SELECT SUM(pm.meta_value) FROM {$wpdb->prefix}postmeta as pm
INNER JOIN {$wpdb->prefix}posts as p ON pm.post_id = p.ID
INNER JOIN {$wpdb->prefix}postmeta as pm2 ON pm.post_id = pm2.post_id
WHERE p.post_status LIKE 'wc-completed' AND p.post_type LIKE 'shop_order'
AND pm.meta_key LIKE '_order_total' AND pm2.meta_key LIKE '_customer_user'
AND pm2.meta_value LIKE $user_id
" );
Проверено и работает.