如何在WooCommerce订单确认邮件中显示产品的GTIN


最近,我刚刚安装了一个名为"WooCommerce UPC,EAN和ISBN"的插件,并激活它,以在我的单品页面上添加GTIN字段。一切都运行正常,我在字段中显示了值(例如:产品代码:123456,显示在产品页面上)。

然而,当有人下订单并且我收到订单确认邮件时,邮件模板显示了产品标题、价格和数量,但未显示GTIN产品代码。那么,如何在WooCommerce电子邮件模板中提取和显示GTIN呢?

以下是从产品中获取GTIN代码并将其保存为自定义订单项的方法,当订单提交时,它将在订单和电子邮件通知中显示出来:


phpCopy code// 从产品对象中获取GTIN代码的实用函数
function get_product_gtin_code( $product ) {
    return $product->get_meta('hwp_product_gtin');
}

// 获取GTIN标签名称的实用函数
function get_gtin_label() {
    $label = get_option('hwp_gtin_text');
    return esc_html__( $label ? $label : 'GTIN');
}

// 将产品的GTIN作为自定义订单项保存并在订单(项目)和电子邮件中显示出来
add_action( 'woocommerce_checkout_create_order_line_item', 'save_and_display_gtin_everywhere', 10, 4 );
function save_and_display_gtin_everywhere( $item, $item_key, $values, $order ) {
    if ( $gtin_code = get_product_gtin_code($values['data']) ) {
        $item->add_meta_data( 'gtin_code', $gtin_code );
    }
}

// 添加可读的“元数据键”标签名称替代
add_filter('woocommerce_order_item_display_meta_key', 'filter_wc_order_item_display_meta_key', 10, 3 );
function filter_wc_order_item_display_meta_key( $display_key, $meta, $item ) {
    if( $item->get_type() === 'line_item' && $meta->key === 'gtin_code' ) {
        $display_key = get_gtin_label();
    }
    return $display_key;
}

// 从订单项对象中获取GTIN代码的实用函数
function get_order_item_gtin_code( $item ) {
    return $item->get_meta('gtin_code');
}

将上述Markdown格式的代码放入您的子主题的functions.php文件中(或插件中),它应该可以正常工作。

这段代码会从产品中提取GTIN码并将其显示在订单和电子邮件通知中,确保了订单中GTIN的显示。如果您想要自定义显示样式,您可以在代码中进行调整。