在WooCommerce中获取订单小计值

问题描述 投票:1回答:3

我使用该模块来计算本地承运人的交货,但是该模块不计算总运费。在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"获得总值。

请,有人可以告诉我使用什么来获得工作小计吗?

php wordpress woocommerce shipping orders
3个回答
3
投票

'Order_subtotal'帖子类型的wp_postmeta表中不存在[第一个'shop_order'

最后一件非常重要的事情:不要直接在woocommerce插件中覆盖模板,以免在更新插件时丢失更改。您可以通过复制'templates'文件夹更好覆盖此文件到您的活动子主题或主题,并将其重命名为woocommerce。请参阅此参考:Overriding WooCommerce Templates via a Theme


更改您的代码(答案)

由于您已经在此模板$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>

这将按您希望的方式工作,但这不会更新订单总数,它只会显示它。

参考:


2
投票

尝试此代码$order_total = get_post_meta ($order_id , '_order_total', true);


0
投票

尝试此$order->get_subtotal_to_display();

© www.soinside.com 2019 - 2024. All rights reserved.