WordPress Multisite là gì?
Một trong những các tính năng thú vị nhất của WordPress nhưng chúng ta lại ít khi tận dụng đó chính là tính năng tạo một mạng lưới nhiều website trên một mã nguồn WordPress duy nhất, tính năng này họ gọi là WordPress Multisite. Ví dụ như trang wpvn.xyz có nhiều trang con như design.wpvn.xyz, code.wpvn.xyz, music.wpvn.xyz và chúng ta có thể sử dụng WordPress Multisite để tạo nhiều trang con trong một mạng lưới như vậy, thậm chí có thể kết nối các người dùng ở mỗi website lại với nhau để họ có thể đăng nhập được trên bất kỳ trang nào trong mạng lưới.
Lợi ích và không nên dùng khi nào WordPress Multisite
Dễ dàng quản lý bản cập nhật của mã nguồn và của các plugin/theme bởi vì tất cả các website con trong mạng lưới đều dùng chung một mã nguồn, một phiên bản theme và plugin.
Có thể tạo ra bao nhiêu website con tùy thích và dễ dàng phân quyền, quản lý nó.
Tiết kiệm tài nguyên vì dùng một mã nguồn cho nhiều website sẽ tiết kiệm hơn là mỗi website một mã nguồn.
Tuy nhiên, chúng ta nên cân nhắc không nên sử dụng WordPress Multisite khi:
Bạn cần database riêng bởi vì tất cả các website con trong một mạng lưới sẽ dùng chung một database, chỉ là nó có những bảng dữ liệu riêng.
Hosting từng website riêng biệt.
Nhìn chung nếu bạn cần xây dựng một hệ thống website mà bạn tin rằng sẽ không có sự khác biệt quá lớn về hình thức thì có thể dùng tính năng này.
Bật Wordpress Multisite ở trang chính
Bây giờ bạn mở tập tin wp-config.php của website mẹ cần kích hoạt tính năng này và chèn đoạn sau vào
define( ‘WP_ALLOW_MULTISITE’, true );
Sau đó vào lại trang quản trị WordPress tìm mục Tools -> Network Setup để bắt đầu cài đặt.
Nhưng trước khi chúng ta cài đặt thì cần xác định sẽ sử dụng kiểu WordPress Multisite nào, hiện tại nó có 2 kiểu là:
- Subdomain: Các website con sẽ là một địa chỉ theo dạng subdomain của website mẹ. Ví dụ wordpress.thachpham.net, seo.thachpham.net, hosting.thachpham.net,…Và nếu bạn dùng kiểu này sẽ cần thiết lập wildcard DNS như mình hướng dẫn phía dưới.
- Sub-directory: Các website con sẽ là một địa chỉ theo dạng thư mục con. Ví dụ: thachpham.net/wordpress, thachpham.net/seo, thachpham.net/hosting,…
Phần Network Details bạn nhập tên mạng và địa chỉ email của người quản trị cao nhất vào nhé.
Sau đó nhấp nút Install để bắt đầu cài đặt. Nó sẽ chuyển bạn đến trang kế tiếp và bắt đầu chèn những code vào tập tin theo hướng dẫn. Cụ thể là chèn code phía trên vào bên dưới <?php
trong wp-config.php và code phía là thay thế các code có sẵn trong .htaccess
Sau khi chèn xong các code theo yêu cầu bạn ấn nút Log In để đăng nhập lại và bây giờ bạn sẽ thấy trên menu quản trị có thêm phần My Sites để truy cập vào các website con.
Thiết lập trang Media dùng chung các website
Một thư viện Media dùng để quản lí tất cả hình ảnh, tập tin đính kèm trong quá trình đăng sản phẩm, tin tức mới. Việc có nhiều website dùng chung tài nguyên phải tốn upload nhiều lần cũng như làm tăng dung lượng hosting. Vi thế việc sử dụng chung như thế là điều cần thiết. Ở đây mình sẽ có 2 plugin cùng chung mục đích trung tâm Media được chia sẻ cho tất cả các trang web trên mạng Multisite.
Network Media Library
https://github.com/humanmade/network-media-library
Mô tả:
Plugin nhỏ này chia sẻ phương tiện một cách minh bạch từ một trang Media trung tâm đến tất cả các trang khác trên mạng. Tất cả các phương tiện được tải lên đều được chuyển hướng minh bạch đến trang web trung tâm và sau đó được cung cấp trên toàn mạng. Không có gì được sao chép, nhân bản, đồng bộ hóa hoặc nhân bản, vì vậy đối với mỗi tệp được tải lên chỉ có một tệp đính kèm và một bản sao của tệp.
Yêu cầu tối thiểu PHP: 7.0 WordPress: 4.9
Plugin phải được cài đặt dưới dạng kích hoạt cho mọi trang. Do đó không thể được kích hoạt trên các trang web riêng lẻ trên mạng.
Trước khi kích hoạt phải xem ID website trong mục Tất cả trang mạng (ở đây mặc định là 2) được sử dụng theo mặc định làm thư viện phương tiện trung tâm. Bạn nên định cấu hình ID trang web thư viện Media của mình thông qua chỉnh trong file network-media-library hoặc thông qua hook network-media-library/site_id. Ví dụ:
add_filter( 'network-media-library/site_id', function( $site_id ) {
return 123;
} );
Cách sử dụng
Sử dụng thư viện Media trên các trang web trong mạng của bạn giống như cách bạn làm bình thường. Tất cả các Media sẽ được lưu trữ minh bạch trên và cung cấp từ trang web thư viện Media trung tâm đã chọn. Chỉ có thể xóa các tệp đính kèm trong khu vực quản trị của thư viện Media trung tâm. Khả năng tương thích Thư viện Media mạng hoạt động minh bạch và liền mạch với tất cả chức năng phương tiện WordPress tích hợp sẵn, bao gồm tải lên tệp, cắt hình ảnh, chèn phương tiện vào bài đăng và xem tệp đính kèm. Chức năng của nó hoạt động với biểu tượng trang web, biểu trưng trang web, hình ảnh nền và tiêu đề, hình ảnh nổi bật, phòng trưng bày, tiện ích âm thanh và hình ảnh, và quản lý phương tiện thông thường. Plugin hoạt động với trình chỉnh sửa khối, trình chỉnh sửa cổ điển, API REST, XML-RPC và tất cả các điểm cuối Ajax tiêu chuẩn để quản lý phương tiện. Các liên kết đến phương tiện từ các trang khác hầu hết đều hoạt động. Khả năng tương thích với các plugin của bên thứ ba là tốt, nhưng không được đảm bảo. Các plugin và thư viện sau được Thư viện phương tiện mạng hỗ trợ rõ ràng:
- Advanced Custom Fields
- Regenerate Thumbnails
- WP User Avatars
Các plugin và thư viện sau đã được kiểm tra và xác nhận là tương thích ngay lập tức:
- BuddyPress
- Extended CPTs
- Gutenberg
- Stream
- User Profile Picture
Multisite Global Media
https://github.com/humanmade/Multisite-Global-Media
Plugin bổ sung một tab mới vào phương thức đa phương tiện, giúp bạn có cơ hội chia sẻ phương tiện từ một trang web đến tất cả các trang web khác của mạng. File multisite-global-media.php sử dụng ID của website trong mục Tất cả trang mạng sẽ là nơi lưu trữ phương tiện toàn cầu. Hiện tại ID trang được đặt ở const SITE_ID = 3; trong file multisite-global-media.php, bạn có thể thay đổi giá trị này để đặt một trong những trang khác làm mặc định để lưu trữ phương tiện toàn cầu. Thông thường chúng ta không nên thay đổi nguồn. Nó dễ dàng hơn nhiều cho việc bảo trì và các điểm khác. Vì vậy, nếu bạn quen thuộc với mã trong ngữ cảnh WordPress, hãy sử dụng hook để thay đổi ID trang web mặc định của plugin bằng một tùy chỉnh nhỏ. Bạn cũng có thể đặt bằng hook global_media.site_id, ví dụ:
add_filter( 'global_media.site_id', 1234 );