Сохранение пользовательских данных в объекте корзины

Для того чтобы добавить дополнительные данные в объект корзины воспользуйтесь следующей функцией, которую нужно разместить в файле functions.php. В данном примере в объект корзины сохраняет данные из массива $_POST ($_POST[‘weight’]) .

add_filter('woocommerce_add_cart_item_data', 'save_custom_product_data', 10, 2);
function save_custom_product_data($cart_item_data, $product_id) {
    $bool = false;
 
	if(isset($_POST['weight'])) {
        $cart_item_data['custom_data']['weight'] = $_POST['weight'];
        $data['weight'] = $_POST['weight'];
        $bool = true;
    }
 
    if($bool) {
        $cart_item_data['custom_data']['unique_key'] = md5(microtime().rand());
        WC()->session->set('custom_variations', $data);
    }
 
    return $cart_item_data;
}

Данные можно передать для обработки данной функцией с помощью Ajax:

$(document).ready(function(){
	$('#button').click(function(){
		$.ajax({
			type: 'post',
			url: '/wp-admin/admin-ajax.php',
			data: {action:'save_custom_product_data','weight':500},
			success: function (response) {
				if(response) {
					var json = JSON.parse(response);							
				}
			},
		});
	});
});