Hướng dẫn get user role wordpress

Từ phiên bản WordPress 2.0 có đưa ra khái niệm Roles. Mỗi user role cho phép thực hiện một nhóm chức nhất định gọi là Capabilities. Plugin này cho phép bạn tạo và quản lý nhiều user với quyền sử dụng khác nhau, không chỉ quản lý Role mặc định trong wordpress bạn có thể tạo Role và Capabilities mới.

Trước tiên, bạn tải plugin Role Manager và cài đặt vào wordpress. Cập nhật phiên bản mới nhất trên sourceforge.net

Roles

Với plugin bạn dễ dàng quản lý roles, sau khi kích hoạt plugin có một vài menu mới sinh ra ở dưới menu Users, bạn nhấn vào “Role”.
Bảng danh sách Role và các Capabilities cho từng roles hiện ra, bạn dễ dàng bật quyền sử dụng (Capabilities) bằng cách nhấn vào hoặc nhấn lại để tắt.

Hướng dẫn get user role wordpress

Thiết lập User level từ 0-10, chọn giá trị cho từng role khác nhau nhưng không có nghĩa giới hạn tối đa 11 Roles. Chức năng User level giúp bạn nhóm các roles lại với nhau thông qua chỉ số level.

Xắp xếp thứ tự theo role cao nhất là Administrator (Editor, Author, Contributor, Subscriber ). Ngoài ra, cho phép bạn tạo User Role mới, kéo thanh cuộn xuống dưới. Nhập tên Role và thiết lập Capabilities cho role mới, giống như bạn checkbox giới hạn một số lệnh trong SQL với database trên hosting vậy. Cuối cùng hoàn tất nhấn vào nút Create Role.

Hướng dẫn get user role wordpress

Quản lý Capabilities

Bạn có thể định nghĩa thêm quyền sử dụng Capabilities, bằng cách nhấn vào menu Users->Capabilities, bạn có thể tạo mới Capability. Ví dụ tôi tạo Capabilities tên ‘Capabi1’, quyền này bạn sẽ kiểm tra và giới hạn sử dụng với user trong code, và trong danh sách Roles sẽ xuất hiện capability này cho bạn lựa chọn.

Hướng dẫn get user role wordpress

Sử dụng hàm current_user_can để kiểm tra capability của user hiện tại. VD:

if ( current_user_can('moderate_comments') ) {
 echo 'The current user can moderate comments';
}

Hoặc mình có tạo hàm kiểm tra roles như sau:

roles as $role) {
		// Does user have role
		if (in_array($role,$roles)) {
			return TRUE;
		}
	}
 
	// User not in roles
	return FALSE;
}
 

Ùage:

// Define roles to check
$roles = array('editor','author');

// Check roles
$in_role = check_user_role($roles);

// Do something based on role
if ($in_role) {
  // User in role, do something
} else {
  // User not in role do something else
}

Cách sử dụng

Thêm user với role mới, bây giờ mình tạo thử user và gán role mới tạo cho user.

Hướng dẫn get user role wordpress

Trong code bạn có thể gán role cho user với hàm add_role. VD

$result = add_role(
    'role1',
    __( 'Role 1' ),
    array(
        'read'         => true,  // true allows this capability
        'edit_posts'   => true,
        'delete_posts' => false, // Use false to explicitly deny
    )
);
if ( null !== $result ) {
    echo 'Yay! New role created!';
}
else {
    echo 'Oh... the basic_contributor role already exists.';
}

Chú ý: nhớ rằng biến global $wp_roles đã thiết lập trước khi bạn có thể thêm hoặc sửa role. Cách tốt nhất là tạo trong plugin hoặc ‘theme-activation hook’ để thêm role cho user. Vì code này chỉ thực thi một lần.

function add_roles_on_plugin_activation() {
       add_role( 'custom_role', 'Custom Subscriber', array( 'read' => true, 'level_0' => true ) );
   }
   register_activation_hook( __FILE__, 'add_roles_on_plugin_activation' );

Ngoài ra có thể sử dụng trong hook init.

User Role Editor

Đây cũng là một plugin cho phép bạn tạo và quản lý User Role khá chuyên nghiệp, với lượt tải trên một triệu người dùng sử dụng. Một vài hình ảnh mô tả tính năng:

Hướng dẫn get user role wordpress

Hướng dẫn get user role wordpress

Hướng dẫn get user role wordpress

Hướng dẫn get user role wordpress

Hướng dẫn get user role wordpress

Download plugin User Role Editor, chi tiết: https://wordpress.org/plugins/user-role-editor/