Получить общую сумму статуса заказа для клиентов в Woocommerce - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь получить цену на все товары в режиме ожидания (т. Е. Пользователь разместил заказ, но не сделал платеж) пользователем woocommerce.

У меня есть следующий код, который обнаруживает всезаказы на удержание товаров пользователем

function get_user_on_hold_product_price() {

    global $product, $woocommerce;

    // GET USER
    $current_user = wp_get_current_user();

    // GET USER ON-HOLD ORDERS
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => $current_user->ID,
        'post_type'   => 'shop_order',
        'post_status' => 'wc-on-hold',
    ) );

Я не уверен, что делать дальше, чтобы получить только общую стоимость всех отложенных заказов пользователем.

Добавление/ подключить эту функцию к шорткоду, например так:

add_shortcode('get_on-hold_price', 'get_user_on_hold_product_price')

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2019

Чтобы получить общую сумму заказов «на удержании», используя WC_Order_Query для повышения удобства использования и совместимости:

add_shortcode('user_on_hold_total', 'get_user_orders_on_hold_total');
function get_user_orders_on_hold_total() {
    $total_amount = 0; // Initializing

    // Get current user
    if( $user = wp_get_current_user() ){

        // Get 'on-hold' customer ORDERS
        $on_hold_orders = wc_get_orders( array(
            'limit' => -1,
            'customer_id' => $user->ID,
            'status' => 'on-hold',
        ) );

        foreach( $on_hold_orders as $order) {
            $total_amount += $order->get_total();
        }
    }
    return $total_amount;
}

Код идетв файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Чтобы получить отформатированную общую сумму, замените return $total_amount; на return wc_price($total_amount);

Использование шорткода: [user_on_hold_total]

Сопутствующая документация: Woocommerce wc_get_orders() и WC_Order_Query

...