• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Калькулятор веса

dardzz

Новичок
Доброго дня! Существует потребность суммировать общий вес заказа в корзине. Каждая из позиций каталога имеет весовое значение. Есть ли какое-то быстрое решение?
 

Stork.71

Гуру
Местный
Я не програмер, поэтому могу только посоветовать. :)
За вывод инфы в корзине (точнее, подсчет "итого") отвечает шаблон \wp-content\plugins\woocommerce\templates\cart\cart-totals.php
Там есть строчка <td><?php wc_cart_totals_subtotal_html(); ?></td> которая выводит предварительный "итого" стоимости, без купонов и т.д. То есть надо сделать функцию наподобие wc_cart_totals_subtotal_html() , но которая будет подбивать сумму не значений price (regular_price, sale_price), а значений weight.
Функция wc_cart_totals_subtotal_html() находится в файле \wp-content\plugins\woocommerce\includes\wc-cart-functions.php и в свою очередь ссылается на функцию get_cart_subtotal().
Функция get_cart_subtotal() находится в файле \wp-content\plugins\woocommerce\includes\class-wc-cart.php и выглядит так:
PHP:
        /**
         * Gets the sub total (after calculation).
         *
         * @params bool whether to include compound taxes
         * @return string formatted price
         */
        public function get_cart_subtotal( $compound = false ) {

            // If the cart has compound tax, we want to show the subtotal as
            // cart + shipping + non-compound taxes (after discount)
            if ( $compound ) {

                $cart_subtotal = wc_price( $this->cart_contents_total + $this->shipping_total + $this->get_taxes_total( false, false ) );

            // Otherwise we show cart items totals only (before discount)
            } else {

                // Display varies depending on settings
                if ( $this->tax_display_cart == 'excl' ) {

                    $cart_subtotal = wc_price( $this->subtotal_ex_tax );

                    if ( $this->tax_total > 0 && $this->prices_include_tax ) {
                        $cart_subtotal .= ' <small>' . WC()->countries->ex_tax_or_vat() . '</small>';
                    }

                } else {

                    $cart_subtotal = wc_price( $this->subtotal );

                    if ( $this->tax_total > 0 && !$this->prices_include_tax ) {
                        $cart_subtotal .= ' <small>' . WC()->countries->inc_tax_or_vat() . '</small>';
                    }

                }
            }

            return apply_filters( 'woocommerce_cart_subtotal', $cart_subtotal, $compound, $this );
        }

Моего скудного понимания PHP не хватило, чтобы понять, как же в итоге в этой функции складывается (цена*количество) по каждой строчке в заказе :) В функции много спама который касается автоподсчета налогов, но нам не нужен.
Но, скорее всего, по аналогии вполне можно сочинить функцию, которая будет складывать общий вес по всем строчкам, и прицепить ее, к примеру, на хук woocommerce_cart_totals_before_shipping
 
  • Like
Реакции: D&B
Сверху Снизу