Cách di chuyển site khách hàng khỏi mạng WordPress Multisite
Nếu bạn đang điều hành agency hoặc cung cấp dịch vụ hosting trên WordPress Multisite, sẽ đến lúc bạn phải đối mặt với tình huống không thể tránh khỏi: một khách hàng phát triển vượt mức của mạng lưới, hoặc họ muốn chuyển site sang host riêng, hoặc bạn chỉ cần cô lập họ để tiện quản lý thanh toán và hỗ trợ. Trên lý thuyết, việc thực hiện extract single site from multisite nghe có vẻ như chỉ là một lệnh export tốn chừng năm phút. Nhưng trong thực tế, đây lại là một trong những công việc lằng nhằng nhất của WordPress. Bài viết này sẽ hướng dẫn chính xác quy trình để bạn có thể split subsite from multisite network một cách gọn gàng và xây dựng lại thành một site độc lập mà khách hàng hoàn toàn sở hữu.
1. Tại sao việc tách một subsite lại rắc rối đến vậy
Một subsite trong Multisite không phải là một site hoàn toàn độc lập. Nó chỉ là một tập hợp các bảng có prefix (wp_5_posts, wp_5_options, v.v.) dùng chung các bảng global cho user, usermeta và cài đặt mạng. Màn hình Tools > Export mặc định chỉ cung cấp cho bạn một file XML chứa bài viết, trang và media. Nó bỏ lại:
- User và vai trò của họ, vốn nằm trong các bảng global dùng chung.
- Cài đặt plugin và theme lưu trong bảng
optionscủa subsite. - Các custom table do form, e-commerce hoặc plugin membership tạo ra.
- Dữ liệu serialize bị dính cứng URL hoặc đường dẫn của subsite cũ.
Nếu chỉ dùng file XML đó để xây dựng lại, bạn sẽ mất nhiều ngày tạo lại tài khoản, cấu hình lại plugin và sửa các liên kết hỏng. Thay vào đó, mục tiêu của chúng ta là có một bản sao hoàn chỉnh, giống nhau đến từng byte của riêng dữ liệu subsite đó, sau đó tiến hành restore gọn gàng vào một bản cài đặt chưa từng là Multisite.
2. Chọn kiến trúc đích
Hãy quyết định nơi site được tách ra sẽ hoạt động trước khi bạn tiến hành export. Có hai hướng giải quyết tốt nhất:
- Bản cài đặt single-site độc lập. Một bản cài đặt WordPress thông thường trên hosting của khách hàng hoặc của bạn. Đây là lựa chọn độc lập hoàn toàn và là điều khách hàng thường muốn khi họ rời đi.
- Một tenant GrabWP cô lập. Nếu bạn muốn giữ lại lợi ích vận hành của một codebase chung nhưng vẫn có sự tách biệt thực sự, hãy chuyển site thành một tenant bằng plugin miễn phí GrabWP Tenancy. Mỗi tenant sẽ có thư mục uploads riêng biệt, prefix bảng riêng và cơ chế routing theo domain hoặc đường dẫn, ví dụ
yoursite.com/site/client-amà không cần thay đổi DNS.
Dù theo cách nào thì đích đến vẫn là môi trường single-site, không phải là một Multisite khác. Đây là nguyên tắc bắt buộc cho quá trình wordpress multisite to single site migration để bước restore bên dưới thành công.
3. Export dữ liệu subsite
Cách gọn gàng nhất để gom toàn bộ mọi thứ là dùng tính năng backup riêng cho từng tenant của GrabWP Tenancy Pro. Tính năng backup của nó sẽ tạo ra file export archive để công cụ restore có thể đọc được: một gói hoàn chỉnh chứa database và wp-content của site, chứ không chỉ là một file dump XML.
- Trong môi trường nguồn, hãy chạy backup cho subsite mà bạn đang muốn chuyển đi.
- Quá trình backup 7 bước chạy với tiến trình AJAX giúp bạn dễ dàng theo dõi đến khi hoàn tất.
- Tải xuống file ZIP export vừa được tạo. File archive này là thứ duy nhất bạn cần mang sang nhà mới.
Điều này rất quan trọng vì GrabWP Restore chỉ chấp nhận các file ZIP do tính năng backup của GrabWP Tenancy Pro tạo ra. Nó không phải là một công cụ import chung cho mọi loại file backup, và giới hạn đó chính là thứ giúp quá trình restore luôn hoạt động ổn định và có thể đoán trước.
4. Xây dựng lại hoàn chỉnh bằng GrabWP Restore

Hãy thiết lập một bản cài đặt WordPress single-site mới hoàn toàn tại đích đến, sau đó cài đặt plugin miễn phí GrabWP Restore.
- Vào Tools > GrabWP Restore (chỉ dành cho administrator).
- Upload file ZIP export từ bước 3.
- Xác nhận đồng ý khôi phục dữ liệu rõ ràng theo yêu cầu của plugin trước khi nó chạy.
- Chạy quá trình restore 8 bước và theo dõi tiến trình AJAX.
Bên dưới hệ thống, Restore xử lý những công đoạn nặng nhọc mà các thao tác migration thủ công thường mắc lỗi: thực hiện streaming SQL import xử lý database lớn mà không làm tràn bộ nhớ RAM, tự động viết lại prefix bảng để các bảng đưa vào khớp với đích đến, và tương thích collation của MySQL 5.7 cũng như 8.0 nhằm đảm bảo quá trình import không bị chết giữa chừng do xung đột charset.
Có một quy tắc cứng: Restore được chủ ý vô hiệu hóa trên Multisite. Các thao tác xóa và ghi đè trên toàn mạng lưới cần một quy trình am hiểu cấu trúc mạng, vì vậy bạn phải restore vào bản cài đặt single-site mới, tuyệt đối không restore vào một Multisite đang hoạt động. Nếu bạn cố tình đi tắt bằng cách restore vào một Multisite khác, công cụ sẽ chặn bạn lại.
5. Kiểm tra URL và dữ liệu serialize
Đây là bước mà các kiểu migration ngây ngô hay đổ bể. URL hoặc đường dẫn subsite cũ bị ghi vào hàng trăm dòng, bao gồm cả các mảng serialize mà một thao tác find-and-replace đơn giản sẽ làm hỏng hoàn toàn. GrabWP Restore sẽ tự động lo việc này cho bạn:
- Tự động cập nhật site URL sẽ thiết lập home URL và site URL sang địa chỉ đích mới.
- Tìm kiếm và thay thế URL trên toàn database viết lại địa chỉ cũ ở mọi nơi, bao gồm cả dữ liệu serialize và dữ liệu mã hóa của theme, nhờ đó các layout của page builder, tùy chọn widget và cài đặt plugin vẫn hoạt động bình thường.
Sau khi quá trình restore kết thúc, hãy kiểm tra ngẫu nhiên kết quả:
- Đăng nhập và xác nhận tài khoản admin cùng vai trò của bạn đã được chuyển sang.
- Mở một trang được tạo bằng page builder và xác nhận hình ảnh cũng như module hiển thị đúng.
- Tìm kiếm trên front end xem có còn bất kỳ phần nào tham chiếu đến đường dẫn
/subsitecũ không. - Xác nhận thư mục uploads hoạt động bình thường, vì Restore thực hiện quá trình khôi phục file an toàn. Nó đổi tên các thư mục
plugins,themesvàuploadshiện có thành.oldtrước khi ghi thư mục mới, nên không có dữ liệu nào bị ghi đè ngầm.
6. Bàn giao hoặc chuyển nhà thành một tenant cô lập
Đến lúc này, bạn có hai hướng đi gọn gàng:
- Bàn giao lại. Bản cài đặt độc lập giờ đã hoàn toàn thuộc về khách hàng. Gửi thông tin hosting cho họ là bạn đã xong việc. Không còn bảng chung, không còn phụ thuộc vào mạng lưới.
- Chuyển nhà thành tenant cô lập. Tiếp tục chạy site trên hạ tầng của bạn nhưng dưới dạng một tenant chuẩn chỉnh. Với GrabWP Tenancy Pro, mỗi tenant có thể dùng chung một prefix MySQL, một database MySQL riêng biệt, hoặc SQLite, và có riêng một thư mục wp-content cô lập. Đó là sự tách biệt thực sự để tiện hỗ trợ và tính phí, giải quyết triệt để điểm yếu dùng chung bảng từng khiến việc tách site trở nên đau đầu ngay từ đầu.
7. Tránh rắc rối này cho những lần sau
Lý do công việc này vất vả nằm ở kiến trúc: Multisite trói buộc mọi subsite vào các bảng global dùng chung. Nếu bạn dự đoán khách hàng sẽ có người đến người đi, hãy khởi đầu cho họ bằng một kiến trúc cô lập dữ liệu ngay từ đầu, nơi mỗi site đã vốn độc lập sẵn. Vận hành các site khách hàng dưới dạng tenant GrabWP đồng nghĩa với việc mỗi site đã có sẵn thư mục uploads cô lập, prefix riêng và cơ chế routing độc lập. Nhờ đó, việc move site off wordpress multisite sẽ chỉ đơn giản là chạy một thao tác backup và một lệnh restore, thay vì phải gỡ rối chằng chịt mất nhiều ngày.
Bắt đầu
Quy trình tách site ở trên chạy bằng các công cụ miễn phí cộng với một phần trả phí: GrabWP Restore và GrabWP Tenancy hoàn toàn miễn phí, còn tính năng backup từng tenant để tạo ra file export archive thuộc về GrabWP Pro với mức giá $9.99/month. Nếu bạn vẫn đang cân nhắc xem liệu Multisite có thực sự phù hợp với agency của mình hay không, hãy đọc tiếp bài viết khi nào không nên dùng WordPress Multisite.
Câu hỏi thường gặp
- Tôi có thể chỉ export một subsite từ mạng WordPress Multisite không?
- Có, nhưng công cụ export mặc định của WordPress chỉ xử lý bài viết, trang và media dưới dạng XML. Nó bỏ qua user, options, custom table và các cài đặt serialize gắn với mạng lưới. Để có bản sao hoàn chỉnh có thể restore của riêng một subsite, hãy dùng tính năng backup từng tenant của GrabWP Tenancy Pro, nó sẽ tạo ra một file export toàn bộ database và wp-content của site đó.
- Tại sao GrabWP Restore không chạy trên Multisite của tôi?
- GrabWP Restore được chủ ý vô hiệu hóa trên Multisite. Quá trình restore thực hiện các thao tác thay đổi dữ liệu toàn mạng, điều mà một Multisite cần quy trình xử lý chuyên biệt để đảm bảo an toàn. Cách làm đúng là export từ nguồn, sau đó restore vào một bản cài đặt single-site độc lập và hoàn toàn mới, tuyệt đối không restore vào một Multisite đang hoạt động.
- Liên kết và cài đặt của tôi có bị lỗi sau khi di chuyển không?
- Sẽ không bị lỗi nếu bạn dùng công cụ có khả năng tự động cập nhật URL trên toàn database. GrabWP Restore chạy tính năng tìm kiếm và thay thế trên toàn database bao gồm cả dữ liệu serialize và dữ liệu mã hóa của theme, cộng thêm tính năng tự động cập nhật site URL, nhờ đó cài đặt widget, nội dung page builder và các options lưu đường dẫn subsite cũ sẽ được sửa lại trong quá trình restore.
Editorial standards: Our content is written by WordPress experts with hands-on multi-tenancy experience. Articles are fact-checked and regularly updated to ensure accuracy.