Viết theme trong plugin (tức là không dùng cơ chế theme truyền thống của WordPress) là hướng kiểm soát cao – tối ưu hóa mạnh, nhưng vẫn có một số nhược điểm / giới hạn mà bạn cần nắm rõ:
customize_register
, live preview...) phụ thuộc theme.register_nav_menu
) và widget (sidebar
) thường đăng ký trong theme → bạn phải viết lại hoàn toàn nếu muốn dùng.🔧 Giải pháp: Viết UI riêng cho cấu hình, hoặc mock lại hook cần thiết.
🔧 Giải pháp: Dùng theme dummy như twentytwentyfour
, hoặc filter:
add_filter('template', fn() => 'twentytwentyfour');
add_filter('stylesheet', fn() => 'twentytwentyfour');
header.php
, footer.php
, single.php
, loop, các hook thân thiện cho SEO.🔧 Giải pháp: Dùng engine như Blade, Twig, hoặc build routing riêng (giống Laravel) cho maintain dễ.
🔧 Giải pháp: Quản lý bằng UI riêng hoặc subdomain tách biệt.
Ví dụ:
after_setup_theme
theme_mods
, custom_background
, custom_logo
, ...Ưu điểm | Nhược điểm |
---|---|
Kiểm soát toàn diện UI | Không tương thích Customizer, Widget, Menus |
Tối ưu hiệu năng | Tốn công viết lại layout / routing |
Phân chia frontend theo domain/plugin | Không preview theme như thường |
Dễ làm SaaS, đa site, routing độc lập | Một số plugin cần "theme thật" để hoạt động |
Hoàn cảnh | Phù hợp? |
---|---|
Muốn làm SaaS CMS nhiều giao diện | ✅ Rất phù hợp |
Web chỉ hiển thị nội dung, không tuỳ biến nhiều | ✅ Tối ưu |
Dùng Elementor, WPBakery,... | ⚠️ Cẩn trọng |
Muốn tận dụng Customizer + theme mod | ❌ Không phù hợp |
Bạn đang làm hệ thống đa giao diện theo domain riêng, nên giải pháp plugin-theme vẫn là hướng đi tối ưu, chỉ cần ghi chú rõ nhược điểm trên để chủ động xử lý.