Отображение общего количества товаров в корзине на корзине и оформлении заказа, а также получение заказа по электронной почте - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь отобразить общее количество товаров в корзине в разных местах

1) Страница корзины 2) Страница оформления заказа 3) Получение заказа по электронной почте клиенту 4) Квитанцию ​​по электронной почте для администратора

Я использую следующую функцию для подсчета общего количества товаров в корзине

 // function to calc total number items in basket
 function gh_custom_checkout_field( $checkout ) {        
 return WC()->cart->get_cart_contents_count();
 } 

Кто-нибудь знает, как я могу отобразить значение в расположениях выше?

Я пытался использовать my_custom_checkout_field ()?>, Но это просто дало внутреннюю ошибку сервера.

1 Ответ

0 голосов
/ 11 мая 2018

1) Для корзины и оформления заказа

Вы можете использовать свою функцию (без переменной $checkout, так как она не нужна) в качестве короткого кода:

function get_cart_count() {        
    return WC()->cart->get_cart_contents_count();
}
add_shortcode( 'cart_count', 'get_cart_count');

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

Вы будете использовать его:

  • В текстовом редакторе WordPress: [cart_count]
  • В коде php: echo do_shortcode( "[cart_count] ");
  • В смешанномphp / html code: <?php echo do_shortcode( "[cart_count] "); ?>

2) Для заказов и уведомлений по электронной почте

Поскольку соответствующий объект корзины несуществует больше , вам нужно получить количество элементов заказа из объекта WC_Order (или ID заказа, если у вас его нет).

Вы можете использовать эту пользовательскую функцию собязательный определенный аргумент, который может быть объектом WC_Order или идентификатором заказа.Если нет, функция ничего не вернет:

function get_order_items_count( $mixed ) {        
    if( is_object( $mixed ) ){
        // It's the WC_Order object
        $order = $order_mixed;
    } elseif ( ! is_object( $mixed ) && is_numeric( $mixed ) ) {
        // It's the order ID
        $order = wc_get_order( $mixed ); // We get an instance of the WC_order object
    } else {
        // It's not defined as an order ID or an order object: we exit
        return;
    }
    $count = 0
    foreach( $order->get_items() as $item ){
        // Count items
        $count += (int) $item->get_quantity()
    }
    return $count;
}

. Вы будете использовать ее всегда, устанавливая в качестве аргумента для функции существующую динамическую переменную $order_id или $order, например

echo get_order_items_count( $order_id ); // Dynamic Order ID variable

Или

echo get_order_items_count( $order ); // Dynamic Order object variable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...