Trong functions.php
đặt của bạn :
add_action( 'wp_loaded', function() {
global $pagenow;
if(
defined( 'IN_MAINTENANCE' )
&& IN_MAINTENANCE
&& $pagenow !== 'wp-login.php'
&& ! is_user_logged_in()
) {
header( 'HTTP/1.1 Service Unavailable', true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 3600' );
if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
require_once( WP_CONTENT_DIR . '/maintenance.php' );
}
die();
}
});
Mã này sẽ kiểm tra hằng số (xem điểm tiếp theo) và nếu người dùng chưa đăng nhập, hãy tải tệp được tạo tại điểm # 1 và thoát.
Nếu bạn muốn chỉ cho phép người dùng có khả năng cụ thể, hãy sử dụng current_user_can('capability_to_allow')
thay vì is_user_logged_in()
. Xem Codex để biết thêm.
Có lẽ bạn có thể thêm vào maintenance.php
một liên kết đến trang đăng nhập; bằng cách này, người dùng không đăng nhập có thể nhấp vào nó mà không cần phải nhập URL đăng nhập theo cách thủ công vào thanh địa chỉ.
Nếu bạn đang sử dụng một chủ đề được phát triển bởi bên thứ 3, hãy sử dụng một chủ đề con ; bằng cách này, bạn sẽ có thể cập nhật chủ đề một cách an toàn mà không mất các thay đổi.