У меня есть веб-сайт 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.
С уважением,
Пим
is_checkout() || is_cart() || defined('WOOCOMMERCE_CHECKOUT') || defined('WOOCOMMERCE_CART')
, поэтому я подозреваю что-то в вашей теме или ошибку в One Page Checkout. - person doublesharp   schedule 27.08.2015