Woocommerce 将自定义字段添加到购物车项目

Woocommerce 将自定义字段添加到购物车项目,woocommerce,Woocommerce,我正在尝试向手动添加到购物车的每个项目添加自定义字段。自定义字段是从第三方API传回的打印ID 这需要附加到购物车中的每个项目,以便在订单付款后可以使用 手动添加到购物车时,我尝试使用$cart\u item\u数据为每个购物车项目设置自定义字段。我不确定这是否是我需要做的,但上帝喜欢一个试验者:) 当我在woocommerce中查看订单时,我在任何地方都看不到printJobId 有人知道我哪里出错了吗 谢谢您还需要两个钩子: add_action( 'woocommerce_get_cart

我正在尝试向手动添加到购物车的每个项目添加自定义字段。自定义字段是从第三方API传回的打印ID

这需要附加到购物车中的每个项目,以便在订单付款后可以使用

手动添加到购物车时,我尝试使用$cart\u item\u数据为每个购物车项目设置自定义字段。我不确定这是否是我需要做的,但上帝喜欢一个试验者:)

当我在woocommerce中查看订单时,我在任何地方都看不到printJobId

有人知道我哪里出错了吗


谢谢

您还需要两个钩子:

add_action( 'woocommerce_get_cart_item_from_session',  'cart_item_from_session' , 99, 2 );

function cart_item_from_session( $data, $values ) {
    $data[ 'printJobId' ] = isset( $values[ 'printJobId' ] ) ? $values[ 'printJobId' ] : '';
    return $data;
}

add_filter( 'woocommerce_add_order_item_meta', 'add_item_meta_order', 10, 3 );

function add_item_meta_order( $item_id, $values ) {
    if ( !is_null( $values[ 'printJobId' ] ) ) {
        wc_add_order_item_meta( $item_id, 'printJobId', $values[ 'printJobId' ] );
    }
}

然后,您将在backoffice和订单详细信息页面上看到元数据

如何查看printJobId字段?默认情况下,它不会显示在任何位置,您需要在订购商品时在数据库中设置printJobId字段的位置手动显示它?您保存了我的一天!谢谢!:)
add_action( 'woocommerce_get_cart_item_from_session',  'cart_item_from_session' , 99, 2 );

function cart_item_from_session( $data, $values ) {
    $data[ 'printJobId' ] = isset( $values[ 'printJobId' ] ) ? $values[ 'printJobId' ] : '';
    return $data;
}

add_filter( 'woocommerce_add_order_item_meta', 'add_item_meta_order', 10, 3 );

function add_item_meta_order( $item_id, $values ) {
    if ( !is_null( $values[ 'printJobId' ] ) ) {
        wc_add_order_item_meta( $item_id, 'printJobId', $values[ 'printJobId' ] );
    }
}