Получить общую сумму оплаченных заказов клиента в Woocommerce 3

Например, если предыдущий рекорд покупателя превышает 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();
}

}

0

Решение

$ user_id = get_current_user_id ();

$ string = wc_get_customer_total_spent ($ user_id);

echo $ string;

1

Другие решения

Вы могли бы использовать 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
" );

Проверено и работает.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector