/**
* 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' );