You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce如何根据订单状态隐藏订单历史及查看弹窗的总价

WooCommerce 报价订单价格隐藏实现说明

我使用了一款订单报价插件,它会在结账页为用户创建自定义支付网关,用户提交结账后,生成的订单状态将自动设为"Proposal Requested"。

目前我已将站点前端大部分位置的价格设置为隐藏(包括商品循环列表、商品详情页、购物车、迷你购物车、结账页等),站点的运行流程如下:

  • 客户将所需商品加入购物车
  • 客户在结账页提交报价申请,生成的订单状态设为"Proposal Requested"。目前客户可在订单历史表中查看该订单,且订单总价是公开可见的
  • 店铺管理员收到通知后,填写所申请商品的价格等信息,将订单状态从"Proposal Requested"修改为"Proposal"
  • 客户收到报价已发送的通知后,可选择接受或拒绝报价。此时当订单状态设为"Proposal"时,客户才能在对应订单的订单历史表「总价」列中看到订单总价

实现需求

若某笔订单的状态为"proposal_requested",则该订单总价列的单元格需显示「-」或「N/A」这类占位符,因为报价发送前不允许客户查看价格。如果可以的话,该状态订单的「查看订单」弹窗中的价格也需要隐藏。

已实现功能(订单查看弹窗价格隐藏)

目前已经通过以下操作成功隐藏了订单查看弹窗表格内的价格列:

  • 将 woocommerce/templates/order/ 路径下的 order-details-item.php 文件复制到子主题路径 my-child-theme/woocommerce/order/ 下
  • 找到代码行 <?php echo $order->get_formatted_line_subtotal( $item ); ?>,将其连同外层包裹的 <td> 标签替换为如下代码:
$order_data     = $order->get_data();
$order_status   = $order_data['status'];

if( $order_status == 'order-proposalreq' ) {              
    echo '<td class="woocommerce-table__product-total product-total"> - </td>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 
}
else{
    echo '<td class="woocommerce-table__product-total product-total">' . $order->get_formatted_line_subtotal( $item ) . '</td>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 
}

上述代码可实现状态为「order-proposalreq」的订单的价格单元格显示为「-」。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:21:02