在WooCommerce订单及邮件中显示产品变体自定义字段
在WooCommerce订单及邮件中显示产品变体自定义字段值
嘿,Bradley!你已经搞定了变体后台自定义字段的添加与保存,接下来只需要补加以下代码,就能把字段值同步到订单(包括前台用户订单页、后台管理员订单详情页)以及各类交易邮件中了:
1. 在订单详情中显示自定义字段值
这段代码会把变体的自定义字段值嵌入到订单的商品项目里,不管是用户前台查订单还是管理员后台看详情都能看到:
// 在订单商品项目末尾显示变体自定义字段 add_action( 'woocommerce_order_item_meta_end', 'display_variation_custom_field_in_order', 10, 4 ); function display_variation_custom_field_in_order( $item_id, $item, $order, $plain_text ) { // 替换成你自己的自定义字段键名(和后台字段的name对应) $custom_field_key = '_your_custom_variation_field'; // 获取当前订单商品对应的变体ID $variation_id = $item->get_variation_id(); if ( $variation_id ) { // 从变体中取出保存的自定义字段值 $custom_field_value = get_post_meta( $variation_id, $custom_field_key, true ); if ( ! empty( $custom_field_value ) ) { // 适配纯文本(邮件)和HTML(页面)两种格式显示 if ( $plain_text ) { echo PHP_EOL . '自定义字段名称: ' . $custom_field_value; } else { echo '<br><strong>自定义字段名称:</strong> ' . esc_html( $custom_field_value ); } } } }
2. 可选:将字段值同步保存到订单元数据
如果希望字段值直接存储在订单里(而不是每次读取变体数据),可以加这段代码,在用户下单时就把字段值写入订单元数据:
// 将变体自定义字段值保存到订单元数据 add_action( 'woocommerce_add_order_item_meta', 'save_variation_custom_field_to_order_item', 10, 3 ); function save_variation_custom_field_to_order_item( $item_id, $values, $cart_item_key ) { $custom_field_key = '_your_custom_variation_field'; if ( isset( $values['variation_id'] ) && $values['variation_id'] > 0 ) { $custom_field_value = get_post_meta( $values['variation_id'], $custom_field_key, true ); if ( ! empty( $custom_field_value ) ) { wc_add_order_item_meta( $item_id, '自定义字段名称', $custom_field_value ); } } }
关键注意点:
- 把代码里的
_your_custom_variation_field替换成你之前在woo_variable_fields函数中定义的字段键名(比如你可能用的是_custom_material这类)。 - 把
自定义字段名称改成你实际的字段标签,比如“材质”“特殊备注”等,让用户能直观理解。 - 代码可以添加到主题的
functions.php文件,或者用自定义代码插件(比如Code Snippets)添加,避免主题更新丢失代码。
这样设置后,用户下单后不管是查看订单详情页,还是收到的确认邮件、发货邮件,都能清晰看到这个变体的自定义字段值啦!
内容的提问来源于stack exchange,提问作者Bradley
相关产品推荐
相关产品推荐

