Ghi dữ liệu các trường trong ACF vào cơ sở dữ liệu

Ghi dữ liệu các trường trong ACF vào cơ sở dữ liệu
Xem trực tiếp

Trường hợp sau khi đã sử dụng ACF để thêm các trường vào user bao gồm các trường: ten_khach_hang, dia_chi, sdt, ten_mien, nha_dang_ky, email_dang_ky, ngay_dang_ky, ngay_het_han, tien_dang_ky, tien_gia_han, tien_dau_vao, thong_tin_host, nha_dang_ky_host, email_dang_ky_host, ngay_dang_ky_host, ngay_het_han_host, tien_dang_ky_host, tien_gia_han_host, tien_dau_vao_host. Bây giờ ta sẽ ghi tất cả các trường này vào sql yduocphu_center có bảng wp_users như sau:
1. Tạo các cột mới trong bảng wp_users:
Đầu tiên, bạn cần đảm bảo rằng tất cả các cột tương ứng với các trường ACF đã tồn tại trong bảng wp_users. Bạn có thể sử dụng đoạn SQL sau để thêm các cột này:

ALTER TABLE `wp_users`
ADD `ten_khach_hang` VARCHAR(255) NOT NULL,
ADD `dia_chi` VARCHAR(255) NOT NULL,
ADD `sdt` VARCHAR(20) NOT NULL,
ADD `ten_mien` VARCHAR(255) NOT NULL,
ADD `nha_dang_ky` VARCHAR(255) NOT NULL,
ADD `email_dang_ky` VARCHAR(255) NOT NULL,
ADD `ngay_dang_ky` DATE NOT NULL,
ADD `ngay_het_han` DATE NOT NULL,
ADD `tien_dang_ky` DECIMAL(10,2) NOT NULL,
ADD `tien_gia_han` DECIMAL(10,2) NOT NULL,
ADD `tien_dau_vao` DECIMAL(10,2) NOT NULL,
ADD `thong_tin_host` TEXT NOT NULL,
ADD `nha_dang_ky_host` VARCHAR(255) NOT NULL,
ADD `email_dang_ky_host` VARCHAR(255) NOT NULL,
ADD `ngay_dang_ky_host` DATE NOT NULL,
ADD `ngay_het_han_host` DATE NOT NULL,
ADD `tien_dang_ky_host` DECIMAL(10,2) NOT NULL,
ADD `tien_gia_han_host` DECIMAL(10,2) NOT NULL,
ADD `tien_dau_vao_host` DECIMAL(10,2) NOT NULL;

Dưới đây là đoạn code PHP để lưu dữ liệu từ các trường ACF vào các cột tương ứng trong bảng wp_users:

add_action('user_register', 'save_acf_fields_to_wp_users');
add_action('profile_update', 'save_acf_fields_to_wp_users');

function save_acf_fields_to_wp_users($user_id) {
global $wpdb;

// Lấy và chuyển đổi dữ liệu từ ACF fields
$acf_fields = array(
'ten_khach_hang' => get_field('ten_khach_hang', 'user_' . $user_id),
'dia_chi' => get_field('dia_chi', 'user_' . $user_id),
'sdt' => get_field('sdt', 'user_' . $user_id),
'ten_mien' => get_field('ten_mien', 'user_' . $user_id),
'nha_dang_ky' => get_field('nha_dang_ky', 'user_' . $user_id),
'email_dang_ky' => get_field('email_dang_ky', 'user_' . $user_id),
// Chuyển đổi định dạng ngày nếu cần
'ngay_dang_ky' => date('Y-m-d', strtotime(get_field('ngay_dang_ky', 'user_' . $user_id))),
'ngay_het_han' => date('Y-m-d', strtotime(get_field('ngay_het_han', 'user_' . $user_id))),
'tien_dang_ky' => get_field('tien_dang_ky', 'user_' . $user_id),
'tien_gia_han' => get_field('tien_gia_han', 'user_' . $user_id),
'tien_dau_vao' => get_field('tien_dau_vao', 'user_' . $user_id),
'thong_tin_host' => get_field('thong_tin_host', 'user_' . $user_id),
'nha_dang_ky_host' => get_field('nha_dang_ky_host', 'user_' . $user_id),
'email_dang_ky_host' => get_field('email_dang_ky_host', 'user_' . $user_id),
'ngay_dang_ky_host' => date('Y-m-d', strtotime(get_field('ngay_dang_ky_host', 'user_' . $user_id))),
'ngay_het_han_host' => date('Y-m-d', strtotime(get_field('ngay_het_han_host', 'user_' . $user_id))),
'tien_dang_ky_host' => get_field('tien_dang_ky_host', 'user_' . $user_id),
'tien_gia_han_host' => get_field('tien_gia_han_host', 'user_' . $user_id),
'tien_dau_vao_host' => get_field('tien_dau_vao_host', 'user_' . $user_id),
);

// Cập nhật vào bảng wp_users
$wpdb->update(
'wp_users',
$acf_fields,
array('ID' => $user_id)
);
}

Lưu ý: Chuyển đổi định dạng ngày: Nếu giá trị ngày từ ACF đang ở định dạng khác (ví dụ: d/m/Y), bạn cần chuyển nó về định dạng Y-m-d trước khi lưu vào cơ sở dữ liệu.
Hàm strtotime() được sử dụng để chuyển đổi ngày từ định dạng đầu vào (có thể là d/m/Y) thành định dạng thời gian UNIX, sau đó dùng date(‘Y-m-d’, …) để chuyển đổi thành định dạng Y-m-d chuẩn của SQL.