
Tự động cập nhật domain cho Contact form 7 khi chuyển website
Sơ đồ trang
Khi bạn chuyển website WordPress từ localhost lên server thật, hoặc thay đổi tên miền A sang tên miền B, Contact Form 7 thường hiển thị cảnh báo màu vàng (warning) ở phần cài đặt email. Thông báo này xuất hiện vì địa chỉ email gửi đi (From) vẫn đang sử dụng tên miền cũ, không khớp với tên miền hiện tại của website.
Ví dụ: Website của bạn đã chuyển từ localhost
sang vutruso.com
, nhưng email gửi đi vẫn là wordpress@localhost
thay vì wordpress@vutruso.com
.
Thay vì phải vào từng form để sửa thủ công, đoạn code dưới đây sẽ tự động cập nhật địa chỉ email cho tất cả các Contact Form 7 trên website của bạn.
Tự động cập nhật tên miền cho Contact Form 7
Bước 1: Thêm code vào functions.php
- Truy cập Giao diện → Trình soạn thảo tệp tin (Appearance → Theme File Editor)
- Chọn file functions.php của theme đang sử dụng
- Kéo xuống cuối file và dán đoạn code sau:
/**
* Tự động cập nhật domain trong cài đặt email Contact Form 7
* Contact -> Contact Forms -> Form cụ thể -> Mail -> From
*/
if ( ! function_exists( 'mp_update_cf7_mail_from_in_postmeta' ) ) {
// Chạy cập nhật mỗi khi vào trang quản trị
add_action( 'admin_init', 'mp_update_cf7_mail_from_in_postmeta' );
function mp_update_cf7_mail_from_in_postmeta() {
global $wpdb;
$domain = parse_url( home_url(), PHP_URL_HOST );
// Lấy tất cả các form Contact Form 7
$forms = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'wpcf7_contact_form'" );
// Hàm hỗ trợ cập nhật cài đặt email
$update_mail_settings = function( $form_id, $meta_key ) use ( $domain ) {
$mail_settings = get_post_meta( $form_id, $meta_key, true );
if ( ! $mail_settings || ! is_array( $mail_settings ) ) {
return;
}
// Thay thế "sender"
if ( isset( $mail_settings['sender'] ) && ! empty( $mail_settings['sender'] ) ) {
$mail_settings['sender'] = preg_replace(
'/<.*@.*>/',
"<wordpress@$domain>",
$mail_settings['sender']
);
}
// Thay thế "from"
if ( isset( $mail_settings['from'] ) && ! empty( $mail_settings['from'] ) ) {
$mail_settings['from'] = preg_replace(
'/<.*@.*>/',
"<wordpress@$domain>",
$mail_settings['from']
);
}
update_post_meta( $form_id, $meta_key, $mail_settings );
};
// Duyệt qua tất cả các form
foreach ( $forms as $form ) {
$update_mail_settings( $form->ID, '_mail' );
$update_mail_settings( $form->ID, '_mail_2' );
}
}
}
- Nhấn Cập nhật tập tin (Update File)
Bước 2: Kích hoạt code
Sau khi thêm code, bạn chỉ cần:
- Truy cập vào Trang quản trị WordPress (wp-admin)
- Code sẽ tự động chạy và cập nhật tất cả các form
Bạn không cần làm gì thêm!
Sau khi chạy xong bạn nên xoá code đi vì code đã hoàn thành sứ mệnh của mình rồi 😀
Bạn lưu bài viết lại khi nào đổi domain hoặc di chuyển tên miền thì hãy áp dụng code này lại.
Sau khi chạy xong sẽ hết thông báo
Code hoạt động như thế nào?
Đoạn code này hoạt động một cách thông minh:
Tự động phát hiện domain mới: Mỗi khi bạn truy cập trang quản trị WordPress, code sẽ tự động lấy tên miền hiện tại của website.
Quét tất cả Contact Form 7: Code tìm kiếm tất cả các form Contact Form 7 đang có trên website.
Cập nhật địa chỉ email: Với mỗi form tìm thấy, code sẽ thay thế địa chỉ email cũ bằng địa chỉ mới với domain hiện tại.
Ví dụ: wordpress@domain-cu.com
sẽ được đổi thành wordpress@domain-moi.com
.
Xử lý cả Mail và Mail (2): Code cập nhật cho cả phần Mail chính và Mail phụ (nếu có bật).
Lợi ích của giải pháp
✅ Tiết kiệm thời gian: Không cần vào từng form để sửa thủ công
✅ Tự động hóa hoàn toàn: Chỉ cần thêm code một lần, sau đó mọi thứ tự động
✅ An toàn: Code kiểm tra kỹ trước khi cập nhật, tránh gây lỗi
✅ Hữu ích khi chuyển website: Đặc biệt tiện lợi khi di chuyển từ localhost lên hosting hoặc đổi domain
✅ Loại bỏ cảnh báo: Không còn thông báo warning màu vàng khó chịu
Lưu ý quan trọng
- Code chỉ cập nhật phần địa chỉ email (domain), không thay đổi các thiết lập khác của form
- Nếu bạn đang sử dụng Child Theme, hãy thêm code vào file
functions.php
của Child Theme - Code hoàn toàn an toàn và không ảnh hưởng đến dữ liệu form đã gửi
- Sau khi thêm code, bạn có thể kiểm tra bằng cách vào Contact → Contact Forms → chọn một form bất kỳ → tab Mail để xem địa chỉ email đã được cập nhật chưa
Kết luận
Với đoạn code đơn giản này, bạn sẽ không còn phải lo lắng về việc cập nhật domain cho Contact Form 7 mỗi khi chuyển website.
Mọi thứ diễn ra tự động, giúp bạn tập trung vào công việc quan trọng hơn là chăm sóc khách hàng và phát triển doanh nghiệp.
Nếu có bất kỳ thắc mắc nào, đừng ngại liên hệ với đội ngũ hỗ trợ của chúng tôi!