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

如何通过子主题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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:52:14