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
相关产品推荐
相关产品推荐

