在 WooCommerce 中获取订单小计价值
Get order subtotal value in 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"
得到总数。
拜托,有人可以告诉我使用什么来获得工作小计吗?
试试这个代码 $order_total = get_post_meta ($order_id , '_order_total', true);
第一个 'Order_subtotal'
在 wp_postmeta table 中不存在 'shop_order'
post 类型。
最后一件非常重要的事情: 不要直接在 woocommerce 插件中覆盖模板,以免在更新插件时丢失您的更改。您可以 更好地 覆盖这些文件,方法是 复制 这个 'templates'
文件夹到您的活动子主题或主题并将其重命名为 woocommerce。
参见此参考资料:Overriding WooCommerce Templates via a Theme…
更改代码(答案)
因为您已经在本模板的开头 $order = wc_get_order( $order_id );
,您可以直接使用 class 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>
这应该可以如您所愿,但这不会更新订单总数,它只会显示它。
参考文献:
试试这个 $order->get_subtotal_to_display();
我使用模块计算当地承运人的送货,但模块不计算总运费。
在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"
得到总数。
拜托,有人可以告诉我使用什么来获得工作小计吗?
试试这个代码 $order_total = get_post_meta ($order_id , '_order_total', true);
第一个 'Order_subtotal'
在 wp_postmeta table 中不存在 'shop_order'
post 类型。
最后一件非常重要的事情: 不要直接在 woocommerce 插件中覆盖模板,以免在更新插件时丢失您的更改。您可以 更好地 覆盖这些文件,方法是 复制 这个 'templates'
文件夹到您的活动子主题或主题并将其重命名为 woocommerce。
参见此参考资料:Overriding WooCommerce Templates via a Theme…
更改代码(答案)
因为您已经在本模板的开头 $order = wc_get_order( $order_id );
,您可以直接使用 class 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>
这应该可以如您所愿,但这不会更新订单总数,它只会显示它。
参考文献:
试试这个 $order->get_subtotal_to_display();