Php 使用Woocommerce 3中的GET方法从url向购物车添加自定义数据

Php 使用Woocommerce 3中的GET方法从url向购物车添加自定义数据,php,wordpress,woocommerce,cart,orders,Php,Wordpress,Woocommerce,Cart,Orders,在Woocommerce中,我使用GET方法从URL向购物车添加产品,如: http://example.com/cart/?add-to-cart=10 现在,我希望能够同时添加一些自定义数据作为产品说明,如: http://example.com/cart/?add-to-cart=10&note=hinote 然后将“hinote”值保存为购物车项目数据。一旦下了订单,我想将“hinote”保存在订单项数据中,并在任何地方显示为自定义订单项数据 可能吗 非常感谢您的帮助。是的

在Woocommerce中,我使用GET方法从URL向购物车添加产品,如:

http://example.com/cart/?add-to-cart=10
现在,我希望能够同时添加一些自定义数据作为产品说明,如:

 http://example.com/cart/?add-to-cart=10&note=hinote
然后将“hinote”值保存为购物车项目数据。一旦下了订单,我想将“hinote”保存在订单项数据中,并在任何地方显示为自定义订单项数据

可能吗


非常感谢您的帮助。

是的,这是可能的,而且非常简单……请尝试以下代码:

// Add custom note as custom cart item data
add_filter( 'woocommerce_add_cart_item_data', 'get_custom_product_note', 30, 2 );
function get_custom_product_note( $cart_item_data, $product_id ){
    if ( isset($_GET['note']) && ! empty($_GET['note']) ) {
        $cart_item_data['custom_note'] = sanitize_text_field( $_GET['note'] );
        $cart_item_data['unique_key'] = md5( microtime().rand() );
    }
    return $cart_item_data;
}


// Display note in cart and checkout pages as cart item data - Optional
add_filter( 'woocommerce_get_item_data', 'display_custom_item_data', 10, 2 );
function display_custom_item_data( $cart_item_data, $cart_item ) {
    if ( isset( $cart_item['custom_note'] ) ){
        $cart_item_data[] = array(
            'name' => "Note",
            'value' =>   $cart_item['custom_note'],
        );
    }
    return $cart_item_data;
}

// Save and display product note in orders and email notifications (everywhere)
add_action( 'woocommerce_checkout_create_order_line_item', 'add_custom_note_order_item_meta', 20, 4 );
function add_custom_note_order_item_meta( $item, $cart_item_key, $values, $order ) {
    if ( isset( $values['custom_note'] ) ){
        $item->update_meta_data( 'Note',  $values['custom_note'] );
    }
}
代码进入活动子主题(或活动主题)的function.php文件。测试和工作