Thêm thông tin hỗ trợ vào dữ liệu sản phẩm trong giỏ hàng

/**
 * Thêm thông tin hỗ trợ vào dữ liệu sản phẩm trong giỏ hàng.
 *
 * @param array $cart_item_data Dữ liệu của sản phẩm trong giỏ hàng.
 * @param int $product_id ID của sản phẩm.
 * @param int $variation_id ID của biến thể sản phẩm.
 * @return array Dữ liệu sản phẩm trong giỏ hàng đã được cập nhật.
 */
function add_hotro_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    // Lấy giá trị của trường 'check_gift' từ dữ liệu POST.
    $hotro = filter_input( INPUT_POST, 'check_gift' );

    // Nếu không có giá trị 'check_gift', trả về dữ liệu giỏ hàng gốc.
    if ( empty( $hotro ) ) {
        return $cart_item_data;
    }

    // Thêm thông tin hỗ trợ vào dữ liệu giỏ hàng.
    $cart_item_data['check_gift'] = $hotro;

    return $cart_item_data;
}

// Áp dụng bộ lọc để thêm dữ liệu vào giỏ hàng khi sản phẩm được thêm vào.
add_filter( 'woocommerce_add_cart_item_data', 'add_hotro_to_cart_item', 10, 3 );

/**
 * Hiển thị thông tin hỗ trợ (quà tặng kèm) trong giỏ hàng.
 *
 * @param array $item_data Dữ liệu của sản phẩm trong giỏ hàng.
 * @param array $cart_item Dữ liệu của sản phẩm được thêm vào giỏ hàng.
 * @return array Dữ liệu của sản phẩm trong giỏ hàng đã được cập nhật.
 */
function display_hotro_into_cart( $item_data, $cart_item ) {
    // Nếu không có giá trị 'check_gift', trả về dữ liệu sản phẩm gốc.
    if ( empty( $cart_item['check_gift'] ) ) {
        return $item_data;
    }

    // Thêm thông tin hỗ trợ vào dữ liệu sản phẩm trong giỏ hàng.
    $item_data[] = array(
        'key'     => 'Quà tặng kèm',  // Tên trường hiển thị
        'value'   => wc_clean( $cart_item['check_gift'] ),  // Giá trị của trường
        'display' => '',  // Không sử dụng hiển thị đặc biệt
    );
    
    return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'display_hotro_into_cart', 10, 2 );

/**
 * Thêm thông tin hỗ trợ (quà tặng kèm) vào các mục của đơn hàng.
 *
 * @param WC_Order_Item $item Mục đơn hàng.
 * @param string $cart_item_key Khóa của sản phẩm trong giỏ hàng.
 * @param array $values Dữ liệu của sản phẩm trong giỏ hàng.
 * @param WC_Order $order Đối tượng đơn hàng.
 */
function add_hotro_to_order_items( $item, $cart_item_key, $values, $order ) {
    // Nếu không có giá trị 'check_gift', không thêm gì vào đơn hàng.
    if ( empty( $values['check_gift'] ) ) {
        return;
    }

    // Thêm thông tin hỗ trợ vào mục đơn hàng.
    $item->add_meta_data('Quà tặng kèm', $values['check_gift'] );
}
add_action( 'woocommerce_checkout_create_order_line_item', 'add_hotro_to_order_items', 10, 4 );

/**
 * Thay đổi văn bản nút "Thêm vào giỏ hàng" trên trang sản phẩm đơn.
 *
 * @return string Văn bản mới của nút "Thêm vào giỏ hàng".
 */
function woocommerce_custom_single_add_to_cart_text() {
    return __( 'Thêm vào giỏ hàng', 'woocommerce' ); 
}
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woocommerce_custom_single_add_to_cart_text' );