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

如何在WooCommerce后台订单及管理员邮件中展示结账页自定义复选框字段

WooCommerce自定义结账字段问题修复方案

你可以将以下代码追加到你的WordPress主题functions.php文件,或自定义功能插件中,即可解决两个问题:

修复复选框显示1/0为是/否状态

首先添加过滤器,适配后台订单编辑页、用户面板、邮件等所有场景的自定义字段值输出:

// 自定义复选框字段值格式化输出
add_filter('woocommerce_get_order_item_meta', 'format_custom_checkbox_field_value', 10, 3);
add_filter('woocommerce_order_item_get_formatted_meta_data', 'format_custom_checkbox_meta', 10, 2);

function format_custom_checkbox_field_value($value, $item_id, $key) {
    if ($key === 'billing_fattura') {
        return $value ? '是' : '否';
    }
    return $value;
}

function format_custom_checkbox_meta($formatted_meta, $order_item) {
    foreach ($formatted_meta as $meta) {
        if ($meta->key === 'billing_fattura') {
            $meta->value = $meta->value ? '是' : '否';
        }
    }
    return $formatted_meta;
}

// 修复后台订单编辑页复选框交互显示
add_filter('woocommerce_admin_billing_fields', 'customize_admin_fattura_field_output', 20);
function customize_admin_fattura_field_output($fields) {
    $fields['fattura']['type'] = 'checkbox';
    return $fields;
}

修复自定义字段不显示在新订单管理员通知邮件问题

通过WooCommerce原生邮件钩子插入自定义字段内容,兼容默认邮件模板:

// 向管理员新订单邮件添加自定义字段
add_action('woocommerce_email_order_details', 'add_custom_fields_to_admin_email', 20, 4);
function add_custom_fields_to_admin_email($order, $sent_to_admin, $plain_text, $email) {
    // 仅针对新订单管理员通知生效,不影响用户邮件
    if ($email->id !== 'new_order' || !$sent_to_admin) return;
    
    $billing_fattura = $order->get_meta('billing_fattura', true) ? '是' : '否';
    $billing_piva = $order->get_meta('billing_piva', true);
    $billing_cf = $order->get_meta('billing_cf', true);
    $billing_sdi = $order->get_meta('billing_sdi', true);
    
    // 输出字段区域适配邮件默认样式
    echo '<h3>发票相关信息</h3>
    <table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif; margin-bottom: 20px;" border="1">
        <tr>
            <th>需要发票?</th>
            <td>' . esc_html($billing_fattura) . '</td>
        </tr>';
        if ($billing_piva) {
            echo '<tr>
                <th>Partita Iva</th>
                <td>' . esc_html($billing_piva) . '</td>
            </tr>';
        }
        if ($billing_cf) {
            echo '<tr>
                <th>Codice Fiscale</th>
                <td>' . esc_html($billing_cf) . '</td>
            </tr>';
        }
        if ($billing_sdi) {
            echo '<tr>
                <th>SDI</th>
                <td>' . esc_html($billing_sdi) . '</td>
            </tr>';
        }
    echo '</table>';
}

验证方法

代码添加后可通过WordPress后台 WooCommerce > 设置 > 邮件 > 新订单 点击「发送测试邮件」验证字段显示效果,若你使用的主题自定义了邮件模板,确认模板中保留了woocommerce_email_order_details钩子即可正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:01