NỘI DUNG
Hướng dẫn tạo role User WordPress dễ và đơn giản nhất.
Vừa rồi mình có support một bạn không login được vào WordPress. Sau khi kiểm tra thì xác định do user mất quyền admin và điều đáng chú ý hơn là role user cũng không còn luôn.
Dưới đây là hướng dẫn chi tiết để tạo lại các role trong WordPress bằng hai phương pháp: sử dụng WP-CLI và sử dụng file PHP. Hướng dẫn này sẽ giúp bạn khôi phục các role mặc định (administrator, editor, author, contributor, subscriber) và tạo role tùy chỉnh (translator), đồng thời gán role cho người dùng cụ thể.

Phương pháp 1: Sử dụng WP-CLI
WP-CLI là công cụ dòng lệnh mạnh mẽ để quản lý WordPress. Và cách này chỉ khả dụng khi Hosting/VPS bạn có hỗ trợ WP-CLI. Và các lệnh dưới đây sẽ giúp bạn tạo lại các role đã bị xóa.
Bước 1: Tạo lại các role mặc định
Các role mặc định của WordPress bao gồm: administrator, editor, author, contributor, và subscriber. Bạn có thể sử dụng lệnh wp role create với tùy chọn –clone để sao chép quyền từ role mặc định.
# Tạo role Administrator
wp role create administrator Administrator
# Tạo role Editor
wp role create editor Editor
# Tạo role Author
wp role create author Author
# Tạo role Contributor
wp role create contributor Contributor
# Tạo role Subscriber
wp role create subscriber Subscriber
Bước 2: Tạo role Translator
Role translator không phải là role mặc định của WordPress, vì vậy bạn cần tạo role này và thêm các quyền tùy chỉnh nếu cần.
# Tạo role Translator
wp role create translator Translator
# Thêm quyền tùy chỉnh cho Translator (ví dụ: edit_posts và read)
wp cap add translator edit_posts read --site
Bước 4: Kiểm tra kết quả
Sau khi chạy các lệnh trên, kiểm tra danh sách role để đảm bảo chúng đã được tạo:
wp role list
Sau khi chạy lệnh thì các role đã được tạo lại đầy đủ.

Lưu ý:
- Nếu role đã tồn tại, bạn có thể cần xóa chúng trước bằng wp role delete <role> –yes.
- Đảm bảo bạn đang chạy lệnh WP-CLI trong thư mục cài đặt WordPress và có quyền truy cập admin.
Phương pháp 2: Sử dụng file PHP
Bạn cũng có thể tạo lại các role bằng cách sử dụng mã PHP để khôi phục các role mặc định và gán role cho người dùng. Dưới đây là hướng dẫn sử dụng file PHP.
Bước 1: Tạo file PHP
Tạo một file PHP (ví dụ: restore_roles.php) trong thư mục gốc của WordPress hoặc một thư mục an toàn.
<?php
// Restoring default WordPress roles
function restore_wordpress_roles() {
// Remove all existing roles to reset
global $wp_roles;
if (!isset($wp_roles)) {
$wp_roles = new WP_Roles();
}
$wp_roles->roles = [];
$wp_roles->role_objects = [];
$wp_roles->role_names = [];
$wp_roles->use_db = true;
// Reinitialize default roles
require_once(ABSPATH . 'wp-admin/includes/schema.php');
populate_roles();
}
// Assign roles to users
function assign_user_roles() {
$user_roles = [
6 => 'administrator',
5 => 'editor',
3 => 'administrator',
4 => 'editor',
1 => 'administrator',
];
foreach ($user_roles as $user_id => $role) {
$user = get_user_by('ID', $user_id);
if ($user) {
// Remove all existing roles
$user->set_role('');
// Assign new role
$user->set_role($role);
echo "Updated user ID {$user_id} with role {$role}\n";
} else {
echo "User ID {$user_id} not found\n";
}
}
}
// Execute the functions
restore_wordpress_roles();
assign_user_roles();
?>
Bước 2: Chạy file PHP
Sau khi tạo xong, bạn chạy file php với lệnh sau.
wp eval-file restore_roles.php

Sau khi chạy xong, thực hiện kiểm tra. Các role đã được tạo thành công, đồng thời các role của user đã được phục hồi.

Lưu ý:
- Role Translator: Trong file PHP, role translator được tạo với các quyền cơ bản (read, edit_posts). Bạn có thể tùy chỉnh danh sách quyền trong hàm add_role.
- Bảo mật: Đảm bảo file PHP không được truy cập công khai sau khi sử dụng.
- ID người dùng: Thay đổi mảng $user_roles trong file PHP để khớp với ID người dùng thực tế trong hệ thống của bạn.
Kết luận
WP-CLI phù hợp nếu bạn muốn quản lý nhanh qua dòng lệnh và có quyền truy cập SSH. File PHP hữu ích khi bạn cần tích hợp vào quy trình tự động hoặc không có WP-CLI.