php 在WooCommerce中获取订单小计值

wgxvkvu9  于 2023-01-12  发布在  PHP
关注(0)|答案(3)|浏览(124)

我使用该模块计算交付的本地承运人,但该模块不计算运费总额。
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"得到总数。
什么可以用来得到一个工作小计?

omjgkv6w

omjgkv6w1#

第一个'Order_subtotal'不存在于'shop_order'发布类型的wp_postmeta表中。

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

参见此参考文献:一个...

    • 更改密码 (答案)**

正如您已经在此模板$order = wc_get_order( $order_id );的开头所做的那样,您可以直接从$order使用类WC_Abstract_Order本地函数get_subtotal( )get_total( ),而无需使用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>

这应该可以按照您的要求工作,但这不会更新订单总额,它只是显示它。
参考文献:

yiytaume

yiytaume2#

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

uxhixvfz

uxhixvfz3#

试试这个$order->get_subtotal_to_display();

相关问题