在Woocommerce订单和电子邮件中显示产品变体的自定义字段

布拉德利

我在WooCommerce后端成功为产品变体添加了一个自定义字段,并且能够显示其价值。我也想在订单和电子邮件中包含此值。

//Display Fields in admin on product edit screen
add_action( 'woocommerce_product_after_variable_attributes', 'woo_variable_fields', 10, 3 );

//Save variation fields values
add_action( 'woocommerce_save_product_variation', 'save_variation_fields', 10, 2 );

// Create new fields for variations
function woo_variable_fields( $loop, $variation_data, $variation ) {

echo '<div class="variation-custom-fields">';

  // Text Field
  woocommerce_wp_text_input( 
    array( 
      'id'          => '_text_field['. $loop .']', 
      'label'       => __( 'additional fees (e.g. monthly fee)', 'woocommerce' ), 
      'placeholder' => '',
      //'desc_tip'    => true,
      'wrapper_class' => 'form-row form-row-first',
      //'description' => __( 'Enter the custom value here.', 'woocommerce' ),
      'value'       => get_post_meta($variation->ID, '_text_field', true)
    )
  );

echo "</div>"; 

}

/** Save new fields for variations */
function save_variation_fields( $variation_id, $i) {

// Text Field
$text_field = stripslashes( $_POST['_text_field'][$i] );
update_post_meta( $variation_id, '_text_field', esc_attr( $text_field ) );
}

// Custom Product Variation
add_filter( 'woocommerce_available_variation', 'custom_load_variation_settings_products_fields' );

function custom_load_variation_settings_products_fields( $variations )    { 
$variations['variation_custom_field'] = get_post_meta( $variations[ 'variation_id' ], '_text_field', true );  
return $variations;
}

我正在使用以下内容在购物车中显示自定义字段的值。

add_filter( 'woocommerce_get_item_data', 'display_custom_field_as_item_data', 20, 2 );
function display_custom_field_as_item_data( $cart_data, $cart_item ) {
    if( $value = get_post_meta( $cart_item['data']->get_id(), '_text_field', true ) ){
        $cart_data[] = array(
            'name' => __( 'Additional Monthly Fee', 'woocommerce' ),
            'value' => sanitize_text_field( $value )
        );
    }
    return $cart_data;
}

进一步来说,现在我在购物车/结帐模板中的产品价格/每件商品的总和以下显示其值,并显示以下内容

echo get_post_meta( $_product->get_id(), '_text_field', true );

如何在订单和电子邮件中显示此字段的值?

LoicTheAztec

更新:要显示订单页面和电子邮件通知中的内容,请尝试以下附加功能(我对woocommerce_get_item_data挂钩函数进行了一些更改,因此您需要将其替换为以下内容)

// Save custom field value in cart item
add_filter( 'woocommerce_add_cart_item_data', 'save_custom_field_in_cart_object', 30, 3 );
function save_custom_field_in_cart_object( $cart_item_data, $product_id, $variation_id ) {

    // Get the correct Id to be used
    $the_id = $variation_id > 0 ? $variation_id : $product_id;

    if( $value = get_post_meta( $the_id, '_text_field', true ) )
        $cart_item_data['custom_data'] = sanitize_text_field( $value );

    return $cart_item_data;
}

// Display on cart and checkout pages
add_filter( 'woocommerce_get_item_data', 'display_custom_field_as_item_data', 20, 2 );
function display_custom_field_as_item_data( $cart_data, $cart_item ) {
    if( isset( $cart_item['custom_data'] ) ){
        $cart_data[] = array(
            'name' => __( 'Additional Monthly Fee', 'woocommerce' ),
            'value' => $cart_item['custom_data']
        );
    }
    return $cart_data;
}

// Save custom field value in order items meta data
add_action( 'woocommerce_add_order_item_meta', 'add_custom_field_to_order_item_meta', 20, 3 );
function add_custom_field_to_order_item_meta( $item_id, $values, $cart_item_key ) {

    if( isset( $values['custom_data'] ) )
        wc_add_order_item_meta( $item_id, __( 'Additional Monthly Fee', 'woocommerce' ), $values['custom_data'] );
}

代码进入您的活动子主题(或主题)的function.php文件中。经过测试和工作。

它将在所有“订单”页面和电子邮件通知中显示自定义字段标签和值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在WooCommerce“订单已完成”电子邮件中添加自定义产品字段

如何在新订单电子邮件中显示WooCommerce自定义产品元?

将产品自定义字段添加到WooCommerce已完成的订单电子邮件中

WooCommerce电子邮件上的订单自定义字段中的替换收件人

Woocommerce新订单电子邮件通知中的自定义“回复”电子邮件标题

在Woocommerce管理员电子邮件通知中显示产品自定义字段值

在WooCommerce电子邮件订购项目中显示可变产品的产品自定义字段

在WooCommerce的电子邮件和订单页面中保存并显示产品自定义数据

在Woocommerce中的电子邮件订单总计表上的新行中插入自定义字段值

在Woocommerce管理员,订单和电子邮件中显示自定义付款字段

在WooCommerce订单和电子邮件通知中显示自定义字段值

在Woocommerce订单和电子邮件通知中显示产品品牌和名称

产品标签的WooCommerce自定义电子邮件

如何在woocommerce中的新订单电子邮件中显示高级自定义字段数据

订单自定义字段未显示在WooCommerce电子邮件通知中

自定义WooCommerce datepicker检出字段已保存并显示在订单和电子邮件中

在Woocommerce订单和电子邮件中的订单总数之后添加自定义文本

在WooCommerce订单和电子邮件中添加和显示自定义购物车项目数据

在WooCommerce电子邮件通知中为管理员显示自定义字段

如何在WooCommerce订单中显示产品自定义字段(自定义SKU)

在WooCommerce订单和电子邮件通知上显示自定义交货通知

WooCommerce-每个产品的自定义电子邮件

在woocommerce订单电子邮件中显示多个产品的自定义字段

在订单电子邮件通知中输出产品自定义字段值

获取要在 Woocommerce 电子邮件通知中显示的自定义字段值

在woocommerce电子邮件中输出产品自定义字段(图像)

WooCommerce 订单电子邮件中未显示自定义电话号码字段

Woocommerce:在购物车、订单确认和订单电子邮件中显示变体名称

在 WooCommerce 订单接收页面和电子邮件的新行中显示产品(变体)描述