如何通过子主题functions.php隐藏WooCommerce的Backordered订单及邮件通知?
移除WooCommerce全场景的“Backordered”提示
可以通过子主题的functions.php添加自定义代码实现需求,下面是两种互补的方案,覆盖订单面板、邮件、收据、交货单等所有场景:
方案1:直接移除订单项的缺货元数据显示
WooCommerce会把“Backordered”作为订单项的元数据渲染,我们通过钩子过滤掉这条元数据:
// 移除订单面板、邮件、文档里的Backordered元数据 add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'remove_backordered_meta_from_order_items', 10, 2 ); function remove_backordered_meta_from_order_items( $formatted_meta, $item ) { foreach ( $formatted_meta as $key => $meta ) { // 匹配所有包含Backordered的元数据项 if ( strpos( $meta->display_key, 'Backordered' ) !== false || strpos( $meta->display_value, 'Backordered' ) !== false ) { unset( $formatted_meta[$key] ); } } return $formatted_meta; }
方案2:全局过滤文本,彻底清除Backordered提示
如果方案1没覆盖到某些场景(比如自定义邮件模板里的文本),用这个全局文本过滤方案,直接把所有包含“Backordered: X”的内容清空:
// 全局过滤WooCommerce文本,移除Backordered提示 add_filter( 'woocommerce_gettext', 'remove_backordered_text_from_all_places', 10, 3 ); function remove_backordered_text_from_all_places( $translated_text, $text, $domain ) { if ( $domain === 'woocommerce' ) { // 移除"Backordered: 数字"格式的文本 $translated_text = preg_replace( '/Backordered: \d+/', '', $translated_text ); // 移除单独的Backordered文本 $translated_text = str_replace( 'Backordered', '', $translated_text ); // 清理替换后多余的空格 $translated_text = trim( $translated_text ); } return $translated_text; }
使用说明
把上面的代码复制粘贴到子主题的functions.php文件末尾即可,操作前建议先备份该文件,避免代码错误导致网站异常。
如果你的交货单是用第三方插件生成的,可能需要额外针对该插件的钩子调整,但上面两个方案基本能覆盖WooCommerce原生的所有场景。
内容的提问来源于stack exchange,提问作者Michael Oglesby
相关产品推荐
相关产品推荐

