Запрос Woocommerce Общее количество покупок, сделанных текущим пользователем, вошедшим в систему

Моя текущая функция успешно запрашивает все продажи, сделанные на моем веб-сайте. Но я не уверен, как ограничить сумму только для текущего пользователя, который входит в систему. Я имею в виду общее количество купленных ими товаров. Они смогут увидеть общую сумму покупок. Текущий код ниже будет отображать общую сумму продаж, сделанных в этот конкретный день.

Мой код

function get_daily_purchases_total(){
global $wpdb;

return $wpdb->get_var( "
    SELECT DISTINCT SUM(pm.meta_value)
    FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
    WHERE p.post_type LIKE 'shop_order'
    AND p.post_status IN ('wc-processing','wc-completed', 'wc-on-hold')
    AND DATE(p.post_date) >= CURDATE()
    AND pm.meta_key LIKE '_order_total'
" );

}

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сама WooCommerce имеет встроенную функцию wc_get_customer_total_spent(), где user_id — параметр, но согласно вашему требованию я немного изменил запрос, который используется WooCommerce.

function so_55556214_get_orders_from_user_id() {
    $user_id = get_current_user_id();
    if ($user_id > 0) {
        //run only for members
        $statuses = array('completed', 'processing', 'on-hold');
        global $wpdb;

        $result = $wpdb->get_var("SELECT SUM(meta2.meta_value)
                    FROM $wpdb->posts as posts
                    LEFT JOIN {$wpdb->postmeta} AS meta ON posts.ID = meta.post_id
                    LEFT JOIN {$wpdb->postmeta} AS meta2 ON posts.ID = meta2.post_id
                    WHERE   meta.meta_key       = '_customer_user'
                    AND     meta.meta_value     = '" . esc_sql($user_id) . "'
                    AND     posts.post_type     = 'shop_order'
                    AND     posts.post_status   IN ( 'wc-" . implode("','wc-", $statuses) . "' )
                    AND     meta2.meta_key      = '_order_total'
                    AND DATE(posts.post_date) >= CURDATE() ");
        return $result;
    }
}

Я протестировал приведенный выше код на своей стороне, и, похоже, он работает нормально. Надеюсь, поможет :-)

Другие вопросы по теме