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

如何在WooCommerce中移除客户订单邮件中的特定元数据?

WooCommerce客户订单邮件:只留文件名,去掉文件预览和链接

核心思路

要区分管理员和客户的邮件,仅在客户收到的订单通知里修改内容——把带预览图和服务器链接的富内容替换成纯文件名。用WooCommerce的woocommerce_order_item_display_meta_value钩子直接控制元数据的显示值,比你原来用的woocommerce_order_item_meta_start更精准高效。

直接可用的代码

// 客户邮件里只显示上传文件名,移除预览图和链接
add_filter( 'woocommerce_order_item_display_meta_value', 'keep_only_filename_in_customer_email', 10, 3 );
function keep_only_filename_in_customer_email( $value, $meta, $item ) {
    // 仅处理邮件场景,订单前台页面保持原样
    if ( is_wc_endpoint_url() ) return $value;

    // 获取当前发送的邮件对象
    $mailer = WC()->mailer()->get_emails();
    if ( empty( $mailer ) ) return $value;

    foreach ( $mailer as $email ) {
        // 匹配所有客户类型的订单邮件(比如处理中、完成状态的订单邮件)
        if ( str_starts_with( $email->id, 'customer_' ) ) {
            // 判断当前元值是否包含预览图或链接的HTML代码
            if ( str_contains( $value, '<img' ) || str_contains( $value, '<a' ) ) {
                // 从HTML中提取文件名(适配常见插件的输出格式,可按需调整正则规则)
                preg_match( '/>([^<]+)</', $value, $matches );
                if ( isset( $matches[1] ) ) {
                    $value = $matches[1];
                }
            }
        }
    }

    return $value;
}

代码说明

  1. 钩子选择:用woocommerce_order_item_display_meta_value直接修改元数据的显示内容,无需改动原有字段的存储逻辑
  2. 场景过滤:先排除订单前台页面,只对邮件通知生效
  3. 邮件类型区分:仅针对customer_开头的邮件(客户接收的各类订单通知)修改,管理员邮件不受影响
  4. 文件名提取:通过正则表达式从带预览和链接的HTML代码中提取纯文件名,替换原有的富内容

针对特定字段的替代方案

如果你的文件上传字段有固定的元数据key(比如_custom_file_upload),可以直接定位该字段处理:

add_action( 'woocommerce_order_item_meta_start', 'adjust_file_meta_for_customer_email', 10, 4 );
function adjust_file_meta_for_customer_email( $item_id, $item, $order, $plain_text ) {
    if ( is_wc_endpoint_url() ) return;

    $current_email = WC()->mailer()->get_current_email();
    if ( !$current_email || !str_starts_with( $current_email->id, 'customer_' ) ) return;

    // 替换成你实际的文件上传字段元key
    $file_meta_key = '_custom_file_upload';
    $file_path = $item->get_meta( $file_meta_key, true );
    
    if ( $file_path ) {
        // 先移除插件原有的输出逻辑(需替换为插件实际的输出函数名,可通过Query Monitor等工具排查)
        remove_action( 'woocommerce_order_item_meta_start', 'plugin_file_output_function', 10 );
        // 只输出纯文件名
        echo '<li><strong>上传文件:</strong> ' . basename( $file_path ) . '</li>';
    }
}

提示:使用此方案时,需将_custom_file_upload替换为你实际的字段元key,plugin_file_output_function替换为插件负责输出预览图和链接的函数名。


内容的提问来源于stack exchange,提问作者Døner M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:40:24