woocommerce_add_order_item_meta问题 [英] Problem with woocommerce_add_order_item_meta

查看:58
本文介绍了woocommerce_add_order_item_meta问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近3个小时我一直在尝试解决woocommerce弃用的钩子问题,而我发疯了,因为我尝试了数百种不同的方法来使其正常工作,而且这种情况一直没有发生.

i have spent the last 3 hours trying to fix a problem with a woocommerce deprecated hook and i'm going crazy because i have tried hundred different options to make it work, and it's not happening.

这是实际的代码,它假定保存自定义字段的值.关于如何使其与过时的挂钩一起工作的任何想法吗?

This is the actual code, it suppose to save the value of custom fields. Any idea about how to make it work with a non obsolete hook?

add_action('woocommerce_add_order_item_meta','save_in_order_item_meta', 10, 3 );
function save_in_order_item_meta( $item_id, $values, $cart_item_key ) {
if( isset( $values['custom_data'] ) ) {
   woocommerce_new_order_item( $item_id, $values['custom_data']['label'], $values['custom_data']['value'] );
}
}

欢迎任何帮助.谢谢

编辑; 已经尝试过.

 add_action( 'woocommerce_add_order_item_meta', 'custom_add_order_item_meta', 20, 3 ); function custom_add_order_item_meta( 
 $item_id, $values, $cart_item_key ) { // Get cart item custom data and update order item meta if( isset( $values['custom_data'] ) ) { 
 wc_add_order_item_meta( $item_id, $values['custom_data']['label'], $values['custom_data']['value'] ); } }


 add_action( 'woocommerce_add_order_item_meta', 'custom_add_order_item_meta', 20, 3 );
 function custom_add_order_item_meta( $item_id, $values, $cart_item_key ) {
 $custom_field_value = $custom_field_value;

 if ( ! empty( $custom_field_value ) ){
    wc_add_order_item_meta( $item_id, $values['custom_data']['label'], $values['custom_data']['value']  );
}

}

推荐答案

钩子woocommerce_add_order_item_metawoocommerce_checkout_create_order_line_item替换,因此用您的代码(假设购物车对象包含您的自定义购物车项目数据):

Hook woocommerce_add_order_item_meta is replaced by woocommerce_checkout_create_order_line_item, so with your code (assuming that the cart object contains your custom cart item data):

add_action('woocommerce_checkout_create_order_line_item', 'save_custom_order_item_meta_data', 10, 4 );
function save_custom_order_item_meta_data( $item, $cart_item_key, $values, $order ) {
    if( isset( $values['custom_data']['label'] ) && isset( $values['custom_data']['value'] ) ) {
       $item->update_meta_data( $values['custom_data']['label'], $values['custom_data']['value'] );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中.应该可以.

Code goes in function.php file of your active child theme (or active theme). It should works.

相关:

  • Replace woocommerce_add_order_item_meta hook in Woocommerce 3.4
  • Woocommerce: Which hook to replace deprecated "woocommerce_add_order_item_meta"
  • Threads with: woocommerce_checkout_create_order_line_item action hook

这篇关于woocommerce_add_order_item_meta问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆