Подсчет полного количества всех элементов заказа в WooCommerce

#php #wordpress #woocommerce #orders #product-quantity

#php #wordpress #woocommerce #заказы #продукт-количество

Вопрос:

У меня проблема в том, что мне нужно полное количество товаров магазина для цикла for.

Я уже пробовал:

 $total_quantity  = $item->get_quantity()
$total_quantity = $order->get_item_count();
$items_count = count( $order->get_items() );
  

К сожалению, безуспешно.

Вот мой код:

 foreach ($order->get_items() as $key => $item) {
        $total_quantity = $order->get_item_count(); <-- NOT WORKING
    for ( $i = 0; $i < $total_quantity; $i   ) {
        $content .= '<button class="accordion">' . $item->get_name() . '</button>';
  }
}
  

Предполагается, что цикл for в цикле foreach вызывает создание кнопок PDF. В зависимости от того, какую кнопку PDF вы нажимаете, индекс передается в JavaScript и проверяет, какая кнопка только что нажата.

С $ item-> get_quantity это почти сработало. Однако индекс ($ i) сбрасывается на 0 для другого продукта. Однако это должно продолжаться. Это означает, или если товар был помещен в корзину 5 раз, а другой товар был помещен в нее только один раз, тогда кнопка сначала отображается правильно 5 раз с правильным индексом, но не для второго товара.

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

Ответ №1:

Для элементов заказа используйте WC_Order_Item_Product get_quantity() следующий метод в FOR цикле:

 $content = ''; // Initializing

// Loop through order items
foreach ( $order->get_items() as $item_id => $item ) {
    // Loop through item quantity
    for ( $i = 1; $i <= $item->get_quantity(); $i   ) {
        $content .= '<button class="accordion">' . $item->get_name() . ' (' . $i . ')</button>';
    }
}
  

Теперь это должно сработать…


Для подсчета полного количества элементов глобального заказа вы можете использовать:

 $total_quantity = 0; // Initializing

// Loop through order items
foreach ( $order->get_items() as $item_id => $item ) {
    $total_quantity  = $item->get_quantity();
}
// Output
echo '<p>Total items quantity: '.$total_quantity.'</p>';
  

Комментарии:

1. Спасибо за ваш ответ и помощь вчера. Это полностью сработало. Но сейчас у меня другая проблема. Для каждого элемента заказа мне нужно имя элемента для кнопок. Также мне нужно правильное название элемента для каждой кнопки, которую я разместил в своем коде. Однако для каждого элемента требуется уникальное имя класса. Цель того, что я преследую, — загрузить PDF-файл для каждого элемента заказа. Также каждый заказ должен быть согласован с пользователем. Вот почему мне так нужна помощь. Если вы хотите, я могу обновить свой код или открыть другую проблему для этой проблемы? Я немного ошеломлен, извините за это.