Получить промежуточную стоимость заказа в WooCommerce

Я использую модуль для расчета доставки местным перевозчиком, но модуль не рассчитывает стоимость доставки в общую сумму.
В wp-content/plugins/woocommerce/templates/order/order-details.php я добавил следующий код, чтобы получить сумму доставки и промежуточную сумму:

     <?php $a = array(
         get_post_meta($order_id, 'Order_subtotal', true),
         get_post_meta($order_id, 'Econt_Customer_Shipping_Cost', true));
     ?>
     <tr class="total-cost">
         <th><?php _e( 'Total:', 'woocommerce'); ?></th>
         <td><?php echo array_sum($a); ?> <?php echo get_woocommerce_currency_symbol(); ?></td>
     </tr>

В результате я получаю только значение "Econt_Customer_Shipping_Cost", но не из "Order_subtotal", чтобы получить итог.

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


person E. Kostadinov    schedule 29.06.2016    source источник
comment
Мой код не работает?   -  person LoicTheAztec    schedule 30.06.2016
comment
Попробовал еще раз - работает! Моя ошибка в том, что я скопировал весь код и получил ошибку: Parse error: syntax error, unexpected ',' я удаляю , // or $order->get_total( ) и evreting работает отлично! :)   -  person E. Kostadinov    schedule 30.06.2016
comment
Я обновляю свой код, если я что-то пропустил, скажите мне исправить это   -  person E. Kostadinov    schedule 30.06.2016


Ответы (3)


Первый 'Order_subtotal' не существует в таблице wp_postmeta для 'shop_order' типа записи.

Последняя очень важная вещь: не перезаписывайте шаблоны непосредственно в плагине woocommerce, чтобы не потерять изменения при обновлении плагина. Вы можете лучше переопределить эти файлы, скопировав эту папку 'templates' в активную дочернюю тему или тему и переименовав ее в woocommerce.
См. эту ссылку: Переопределение шаблонов WooCommerce с помощью темы


Изменение кода (ответ)

Как вы уже делали в начале этого шаблона $order = wc_get_order( $order_id );, вы можете использовать класс WC_Abstract_Order встроенные функции get_subtotal( ) или get_total( ) непосредственно из $order без использования функции get_post_meta() Wordpress.

Я изменил некоторые вещи в вашем коде:

<?php 
    $display_sum = $order->get_subtotal( ); // or $order->get_total( );
    $display_sum += get_post_meta( $order->id, 'Econt_Customer_Shipping_Cost', true );
    $display_sum .= ' '. get_woocommerce_currency_symbol( );
?>
<tr class="total-cost">
    <th><?php _e( "Total:", "woocommerce" ); ?></th>
    <td><?php echo $display_sum; ?></td>
</tr>

Это должно работать так, как вы этого хотите, но это не обновит общую сумму заказа, а просто отобразит ее.

Рекомендации:

person LoicTheAztec    schedule 30.06.2016
comment
Привет, LoicTheAztec! Большое спасибо за код!!! С одним изменением он отлично работает для меня в файле электронной почты-заказа-подробности! Я изменил только это: $display_sum += get_post_meta( $order_id на $display_sum += get_post_meta( $order->id - person E. Kostadinov; 30.06.2016

Попробуйте этот код $order_total = get_post_meta ($order_id , '_order_total', true);

person mujuonly    schedule 29.06.2016

Попробуйте это $order->get_subtotal_to_display();

person efirvida    schedule 10.07.2017