
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.