KDIGI CMS
Chuyển website từ WordPress sang KDIGI CMS
Pipeline có thể chạy lại, có cổng duyệt và sao lưu bắt buộc trước khi ghi dữ liệu.
Cập nhật lần cuối:

KDIGI CMS chuyển bài viết, trang, media, menu, SEO Yoast/RankMath và redirect 301 từ mọi site WordPress. Bạn duyệt dữ liệu ở dạng JSON, khóa cổng review rồi mới ghi vào CMS.
Tóm tắt nhanh
- Đường đi: WordPress →
raw/→staged/→ cổng review → CMS.- Chưa khóa cổng review thì không ghi gì vào database.
- Database không phải local luôn được
pg_dumptrước khi ghi.- Mọi lệnh idempotent, có
--dry-runđể xem trước.- Theme, plugin, form, ACF và page builder không được chuyển.
Lệnh chi tiết từng bước: runbook trên GitHub.

Trước khi bắt đầu
- Dùng KDIGI CMS từ 1.0.1 trở lên (nhật ký phát hành)
- Node.js ≥ 20, pnpm, PostgreSQL đích đã migrate
DATABASE_URItrong.env- WordPress có REST API
/wp-json/truy cập được pg_dumpkhớp phiên bản server (góipostgresql-client)- Application Password (tùy chọn) cho bài nháp, menu, người dùng
Những gì được chuyển
- Bài viết và trang Chuyển sang Markdown, giữ ngày xuất bản.
- Taxonomy và menu Giữ cây cha/con và vị trí menu.
- Media Tải ảnh gốc về ổ đĩa hoặc Cloudflare R2.
- SEO Yoast và RankMath quy về một schema thống nhất.
- Redirect 301 Tự sinh khi permalink đổi.
- WooCommerce Tùy chọn, thành Products với một giá chung.
Cảnh báo Không chuyển: theme, plugin, form, tài khoản WordPress, widget, ACF/meta box và nội dung page builder lưu ngoài
post_content. Dựng lại phần cần giữ ở frontend hoặc bằnglandings.
Các bước chuyển
- Baseline nguồn Lưu sitemap, canonical, status code mọi URL; đóng băng nội dung.
- Archive Tải bản chụp qua REST hoặc WPGraphQL vào
raw/. - Normalize Sinh
staged/: JSON từng tài liệu, SEO đã thống nhất. - Review và khóa Sửa
staged/,--gate lintsạch rồi--gate lock. - Import
--dry-runtrước, rồi chạy thật; cópg_dumpbắt buộc. - Nghiệm thu và cutover Duyệt checklist, chuyển DNS, theo dõi Search Console.
Lệnh cốt lõi, chạy ở thư mục gốc repo kdigi-cms-open:
SITE=my-site; WP_URL=https://wp.example.com; DOMAIN=example.com
mig() { node --env-file=.env --import tsx src/importers/run-wp-migration.ts \
--site "$SITE" --wp-url "$WP_URL" --domain "$DOMAIN" "$@"; }
mig # archive, normalize, dừng ở cổng review
mig --gate lint && mig --gate lock # rà staged/ rồi khóa
mig --from schema --to redirects --dry-run # xem trước
mig --from schema --to redirects # import thật

Mẹo Đặt
WP_UTC_OFFSET=+07:00trước khi normalize đểpublishedAtkhông lệch giờ. ĐặtPAYLOAD_PUBLIC_SERVER_URLvà nơi lưu media (thư viện media) trước phasemedia.
Theo loại site WordPress
| Cách soạn | Kết quả |
|---|---|
| Classic Editor | Tốt nhất: đoạn, heading, list, bảng, ảnh |
| Gutenberg | Tốt; block động (query loop, form) bị mất |
| Elementor, Divi, WPBakery | Cấu trúc bị làm phẳng, layout mất |
Yoast và RankMath đều được đọc; JSON-LD không nhập mà CMS sinh lại (SEO và JSON-LD).
Lưu ý Canonical tùy biến trong database WordPress có thể không hiện ở frontend. Trước khi lock, so
seo.canonicalOverridetrongstaged/với trang thật.
Redirect và cutover
- Tự sinh 301 Cho mọi tài liệu
publishedcó permalink đổi. - Không tự sinh Trang taxonomy, tác giả, phân trang, feed,
?p=123: thêm vàostaged/redirects/. - Nội dung đã xóa Để
draft(404), đừng redirect về trang chủ. - Giữ WordPress chạy Ít nhất 2-4 tuần sau cutover.
Nghiệm thu
- Số lượng tài liệu trong CMS khớp
staged/ - Chạy lại toàn bộ không đổi số tài liệu (
created: 0) - 10 URL ngẫu nhiên và sitemap cũ mở được hoặc 301 đúng đích
- Canonical, OG, robots đúng domain mới, không
noindexngoài ý muốn - Ngày xuất bản đúng nguồn, không phải ngày import
- Đã lưu file
pg_dumpvà thư mụcwp-archive/<site>/
Rollback
| Tình huống | Cách quay lại |
|---|---|
Sai staged/, chưa import |
Sửa, lint, lock lại |
| Import local hỏng | pnpm migrate:down, pnpm migrate, import lại |
| Import database không local hỏng | Dừng app, pg_restore file dump trong backups-local/ (xem runbook) |
| Vài tài liệu sai | Versions → Restore |
| Đã chuyển DNS, lỗi nặng | Trỏ DNS về WordPress cũ |
Sau khi chuyển
- Hiển thị nội dung Frontend lấy qua REST và GraphQL.
- Tự vận hành Tự host, sao lưu và nâng cấp.
- Còn phân vân? So sánh KDIGI CMS và WordPress.
Câu hỏi thường gặp
Chuyển từ WordPress có mất thứ hạng SEO không?
Những gì không được chuyển từ WordPress?
Có cần tài khoản quản trị WordPress không?
Nếu import hỏng giữa chừng thì khôi phục thế nào?
Có chuyển được site đa ngôn ngữ (Polylang, WPML) không?
Đọc tiếp
Tự host
Cài KDIGI CMS trên VPS của bạn bằng Docker Compose hoặc Coolify: yêu cầu hệ thống, biến môi trường, sao lưu, nâng cấp và các bước tăng cường bảo mật.
SEO on-page
Checklist SEO on-page thực hành trong KDIGI CMS: title, meta description, heading, canonical, internal link, JSON-LD, sitemap và kiểm tra SEO có sẵn.
KDIGI CMS vs WordPress
So sánh KDIGI CMS và WordPress về kiến trúc, bảo mật, SEO, plugin, chi phí và công sức chuyển đổi. Có bảng, nguồn dẫn và khi nào nên ở lại WordPress.
SEO và JSON-LD
Trường SEO, mẫu title kiểu RankMath, đồ thị JSON-LD, ảnh OG dự phòng, kiểm tra SEO, gợi ý internal link và AI SEO tùy chọn ngay trong trình soạn thảo.