Оформление заказа на Woocommerce Onepage не показывает стоимость доставки

У меня есть веб-сайт Woocommerce One Page Checkout с одним продуктом. Пока все работает, но по какой-то причине я не вижу отображаемых затрат на доставку.

Расчет цены правильный, и когда я захожу на портал оплаты, стоимость доставки добавляется к общей цене, но стоимость доставки не отображается.

Чтобы дать некоторое представление о моем поиске решения: рендеринг всех данных происходит в /woocommerce/templates/checkout/review-order.php

Там называется:

<?php wc_cart_totals_shipping_html(); ?>

Эту функцию можно найти в /woocommcerce/includes/wc-cart-functions.php

Там исполняемый код:

/**
 * Get shipping methods
 *
 * @access public
 * @return void
 */
function wc_custom_cart_totals_shipping_html() {

    $packages = WC()->shipping->get_packages();
    foreach ( $packages as $i => $package ) {
        $chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';

        wc_get_template( 'cart/cart-shipping.php', array( 'package' => $package, 'available_methods' => $package['rates'], 'show_package_details' => ( sizeof( $packages ) > 1 ), 'index' => $i, 'chosen_method' => $chosen_method ) );
    }
}

Проблема в том, что $packages = WC()->shipping->get_packages(); возвращает пустой массив.

Функция get_packages в /woocommerce/includes/class-wc-shipping.php выглядит следующим образом:

/**
     * Get packages
     * @return array
     */
    public  function get_packages() {
        return $this->packages;
    }

Итак, свойство $ this-> packages не установлено. Это свойство задается в функции calculate_shipping в том же файле /woocommerce/includes/class-wc-shipping.php.

Я пробовал вызвать эту функцию прямо перед $packages = WC()->shipping->get_packages();, но это не сработало.

Есть ли кто-нибудь, кто может мне помочь? Обратите внимание, что у меня нет большого опыта программирования в Wordpress.

С уважением,

Пим


person PimD1988    schedule 27.08.2015    source источник
comment
Если вы приобрели одностраничную кассу, вам следует обратиться в службу поддержки Woo. Это премиальный плагин, к которому у большинства пользователей SO не будет доступа. Хотя я могу вам сказать, что сначала они попросят вас протестировать тему по умолчанию. Если это работает, значит, проблема связана с модификациями WooCommerce вашей темы. И если проблема связана с вашей темой, вам следует связаться с ее автором. Если проблема не устранена даже с отключенной темой по умолчанию и другими плагинами, это может быть ошибкой в ​​OPC, и авторы захотят ее исправить.   -  person helgatheviking    schedule 27.08.2015
comment
+1 к предложению @ helgatheviking. В WooCommerce этот метод вызывается в WC_Cart, если выполняется какое-либо из следующих условий is_checkout() || is_cart() || defined('WOOCOMMERCE_CHECKOUT') || defined('WOOCOMMERCE_CART'), поэтому я подозреваю что-то в вашей теме или ошибку в One Page Checkout.   -  person doublesharp    schedule 27.08.2015
comment
Спасибо за подсказки, пока мы решили это простым способом, просто поместив текстовое сообщение, в котором говорится, что стоимость доставки рассчитывается поверх отображаемой цены. Спасибо!   -  person PimD1988    schedule 28.08.2015


Ответы (1)


Была та же проблема, но через некоторое время вам удалось разобраться, вам нужно позвонить

WC()->cart->calculate_totals();

Это заполнит пакеты, и затем вы сможете использовать

wc_cart_totals_shipping_html();

Чтобы показать список доступных способов доставки куда угодно

person user1718074    schedule 24.08.2016
comment
Спасибо. Спаси мой день;) - person Kārlis Millers; 02.09.2016
comment
Большое спасибо! - person Toản Lê Văn; 12.04.2020