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

通过woocommerce_email_order_meta钩子仅在WooCommerce管理员邮件显示自定义字段

解决代码

你判断需要用到$sent_to_admin参数的思路是正确的,该参数值为true时代表当前邮件为管理员通知,为false时为客户通知,只需在函数开头增加对应判断,同时修正原代码中订单项名称修改不生效的问题即可,完整代码如下:

add_action( 'woocommerce_email_order_meta', 'add_depot', 10, 3 );
  
function add_depot( $order, $sent_to_admin, $plain_text ){
    // 非管理员邮件直接终止逻辑执行
    if ( ! $sent_to_admin ) {
        return;
    }

    $items = $order->get_items();
    foreach ( $items as $item ){
        $depot = $item->get_meta('depot');
        // 仅当depot字段有值时修改商品名
        if ( ! empty( $depot ) ) {
            $item->set_name( 'Dépôt: ' . $depot . ' ' . $item->get_name() );
        }
    }
}

代码说明

  • 开头的判断逻辑会过滤所有客户邮件、前端订单页的展示场景,仅管理员通知会显示depot字段
  • 使用WooCommerce官方提供的set_name()方法修改订单项名称,替代原数组赋值的写法,确保修改生效
  • 额外增加空值判断,避免depot无值时输出多余的前缀内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:01