Function bật bảo trì WordPress với truy cập dành riêng quản trị và role bất kỳ

bao-tri-web
Xem trực tiếp
function custom_maintenance_mode() 
{ 
if (!current_user_can('edit_posts') && !is_user_logged_in()) 
{ 
wp_die( '<h1>Website đang bảo trì</h1><p>Xin vui lòng quay lại sau.</p>', 'Website đang bảo trì' ); } } 
add_action('get_header', 'custom_maintenance_mode');

Mục đích

Chức năng custom_maintenance_mode() được sử dụng để hiển thị một thông báo bảo trì và ngăn chặn truy cập vào trang web đối với những người dùng không có quyền chỉnh sửa bài viết hoặc chưa đăng nhập.

Giải thích mã

function custom_maintenance_mode(): Đây là phần khai báo một hàm trong PHP có tên là custom_maintenance_mode.

if (!current_user_can(‘edit_posts’) && !is_user_logged_in()): Điều kiện này kiểm tra hai yếu tố:

!current_user_can(‘edit_posts’): Kiểm tra xem người dùng hiện tại có quyền chỉnh sửa bài viết hay không. Nếu người dùng không có quyền này (phủ định bằng dấu !), điều kiện sẽ trả về true.

!is_user_logged_in(): Kiểm tra xem người dùng hiện tại có đang đăng nhập hay không. Nếu người dùng chưa đăng nhập, điều kiện sẽ trả về true.

Nếu cả hai điều kiện đều đúng (nghĩa là người dùng không có quyền chỉnh sửa bài viết và chưa đăng nhập), thì mã bên trong khối if sẽ được thực thi.

wp_die( ‘<h1>Website đang bảo trì</h1><p>Xin vui lòng quay lại sau.</p>’, ‘Website đang bảo trì’ );:

Hàm wp_die() trong WordPress hiển thị một thông báo lỗi và dừng thực thi mã. Trong trường hợp này, nó hiển thị một tiêu đề “Website đang bảo trì” và thông báo “Xin vui lòng quay lại sau.”

Tham số đầu tiên là nội dung HTML sẽ được hiển thị trên trang.

Tham số thứ hai là tiêu đề của trang (được hiển thị trong tab trình duyệt).

add_action(‘get_header’, ‘custom_maintenance_mode’);:

add_action() là một hàm WordPress để liên kết một hàm tùy chỉnh với một hành động cụ thể.

Ở đây, hành động get_header được sử dụng để kích hoạt hàm custom_maintenance_mode ngay trước khi header của trang được tải. Điều này có nghĩa là bất kỳ trang nào tải header sẽ thực hiện kiểm tra bảo trì trước.