Tìm hiểu cách sử dụng logic có điều kiện để tải các chủ đề khác nhau cho những người dùng cụ thể trên trang web WordPress của bạn. Đây là một đoạn mã hữu ích nếu bạn đang phát triển một chủ đề mới cho một trang web hiện có và nó chưa hoàn toàn sẵn sàng để sản xuất. Bạn có thể thiết lập mọi thứ để bạn (nhà phát triển và quản trị viên trang web) thấy chủ đề mới mà bạn đang làm việc, nhưng tất cả những khách truy cập khác sẽ thấy chủ đề chuẩn của trang web.
Hầu hết các hướng dẫn trên trang web này sử dụng các tệp PHP nhỏ trong chủ đề con tùy chỉnh của bạn để triển khai chức năng mới. Nhưng chúng tôi không thể làm điều đó ở đây, bởi vì chúng tôi cần chặn WordPress TRƯỚC KHI nó quyết định chủ đề nào sẽ áp dụng. Vì vậy, chúng ta cần kết hợp một trình cắm tùy chỉnh nhỏ để thực hiện công việc cho chúng ta.
Tạo một plugin WordPress rất đơn giản
Chúng tôi có thể tạo một trình cắm hướng đối tượng đầy đủ, có cấu trúc tốt, bằng cách sử dụng một cái gì đó giống như Trình tạo trình diễn văn bản gốc của plugin WordPress. Đó là một công cụ tuyệt vời để bắt đầu viết một plugin, nhưng nó có thể quá mức cần thiết đối với các dự án rất nhỏ như dự án này. Tất cả những gì chúng ta thực sự cần làm ở đây là tạo một thư mục với một tệp PHP duy nhất trong đó. Một plugin nhỏ siêu đơn giảnTrên máy tính của bạn, hãy tạo một thư mục có tên là my-theme-divertor và tạo tệp văn bản trong đó, được gọi là my-theme-divertor.php . Mở tệp văn bản này và dán nội dung sau vào đó để bắt đầu.
/** * Plugin Name: My Theme Divertor * Plugin URI: https://wp-tutorials.tech/refine-wordpress/conditional-themes/ * description: Conditional frontend theme divertor * Version: 1.0.0 * Author: John Doe * Author URI: https://headwall-hosting.com/ * Text Domain: my-theme-divertor */ // If this file is called directly, abort. if (!defined('WPINC')) { die; } // Our code will go here...
Điều này là đủ để làm cho plugin của chúng tôi được WordPress công nhận. Vì vậy, bạn có thể tải lên và cài đặt plugin.
- Giải nén thư mục my-theme-divertor để bạn nhận được một tệp có tên my-theme-divertor.zip
- Trên trang web của bạn, hãy truy cập trang quản trị plugin
- Nhấp vào Thêm mới và sau đó tải lên plugin
- Tải lên và kích hoạt tệp zip của bạn.
Để biết thêm thông tin về cách viết plugin, hãy xem hướng dẫn “Tạo một plugin WordPress tùy chỉnh đơn giản” của chúng tôi.
Khi plugin được cài đặt và kích hoạt, mọi thứ sẽ hoạt động như trước đây. Trang web của bạn sẽ vẫn hoạt động bình thường và chúng tôi có một tệp PHP để chúng tôi có thể thêm logic có điều kiện của mình.
Bạn có thể chỉnh sửa mã plugin trực tiếp trong khu vực quản trị WordPress, điều này rất tốt cho các chỉnh sửa nhỏ mà chúng tôi cần thực hiện.
Thêm chuyển đổi chủ đề có điều kiện
Chúng tôi sẽ tạo một hàm đơn giản trả về một trong haitrue
hoặc false
, cho chúng tôi biết có nên chuyển hướng WordPress sang chủ đề tạm thời / nhà phát triển của chúng tôi hay không. Hàm này có thể trông hơi… phức tạp - bạn có thể viết lại nó trong một dòng. Nhưng, tôi thích mã thực sự dễ đọc theo cách từng bước bởi những người có thể không phải là lập trình viên dày dạn kinh nghiệm.
function is_theme_divert_required() { $is_divert_required = false; if (is_admin()) { // ... } elseif (!function_exists('wp_get_current_user')) { // ... } elseif (!current_user_can('administrator')) { // ... } else { $is_divert_required = true; } return $is_divert_required; }Bây giờ tất cả những gì chúng ta cần làm là đặt nó vào một hàm được gọi
is_theme_divert_required
và gọi nó trong một vài trình xử lý bộ lọc.
add_filter('template', 'mtp_alternative_template', 50); add_filter('stylesheet', 'mtp_alternative_stylesheet', 50);
Để tất cả chúng cùng nhau
Đây là toàn bộ đoạn mã nằm trong tệp my-theme-divertor.php . Bạn có thể sao chép và dán nó và sử dụng nó như hiện tại. Chỉ cần thay đổi giá trị củaMTP_ALTERNATIVE_THEME_NAME
chủ đề bạn muốn sử dụng.
/** * Plugin Name: My Theme Divertor * Plugin URI: https://wp-tutorials.tech/refine-wordpress/conditional-themes/ * description: Conditional frontend theme divertor * Version: 1.0.0 * Author: John Doe * Author URI: https://headwall-hosting.com/ * Text Domain: my-theme-divertor */ // If this file is called directly, abort. if (!defined('WPINC')) { die; } // Replace this with the slug for your alternative/dev theme. const MTP_ALTERNATIVE_THEME_NAME = 'twentytwentyone'; function is_theme_divert_required() { $is_divert_required = false; if (is_admin()) { // ... } elseif (!function_exists('wp_get_current_user')) { // ... } elseif (!current_user_can('administrator')) { // ... } else { $is_divert_required = true; } return $is_divert_required; } function mtp_alternative_template($template) { if (is_theme_divert_required()) { $template = MTP_ALTERNATIVE_THEME_NAME; } return $template; } add_filter('template', 'mtp_alternative_template', 50); function mtp_alternative_stylesheet($stylesheet) { if (is_theme_divert_required()) { $stylesheet = MTP_ALTERNATIVE_THEME_NAME; } return $stylesheet; } add_filter('stylesheet', 'mtp_alternative_stylesheet', 50);Đó là nó. Hãy vui vẻ khi chuyển hướng những người dùng khác nhau sang các chủ đề khác nhau.