Hướng dẫn sửa lỗi mất User Role trong WordPress

Một lỗi không quá phổ biến nhưng khá khó chịu trong WordPress là tình trạng User Role bị mất, kể cả Administrator. Khi lỗi này xảy ra, bạn có thể đăng nhập website nhưng không thể truy cập khu vực quản trị.

Trong bài viết này, mình sẽ chia sẻ một cách khôi phục lại User Role mặc định của WordPress bằng WP-CLI, dựa trên những gì WordPress core hỗ trợ sẵn.

Dấu hiệu cho thấy website bị mất User Role

Bạn có thể đang gặp lỗi này nếu thấy một hoặc nhiều dấu hiệu sau:

  • Đăng nhập được nhưng không vào được /wp-admin
  • WordPress thông báo không đủ quyền truy cập
  • Chạy lệnh:
wp role list

nhưng không thấy role nào được hiển thị

  • Khi cố gắng gán quyền admin:
wp user set-role username administrator

WP-CLI trả về lỗi:

Role doesn't exist

Những dấu hiệu này thường cho thấy dữ liệu User Role trong WordPress đã gặp vấn đề.

Nguyên nhân có thể gây ra lỗi

Có nhiều nguyên nhân khác nhau có thể dẫn đến việc mất User Role, chẳng hạn như:

  • Plugin quản lý role hoặc plugin bảo mật can thiệp sâu vào hệ thống phân quyền
  • Đoạn code tuỳ chỉnh được thêm vào theme hoặc plugin
  • Quá trình restore database không đầy đủ
  • Option wp_user_roles trong bảng wp_options bị lỗi hoặc lưu sai kiểu dữ liệu

Trong hầu hết các trường hợp, vấn đề không nằm ở user mà nằm ở cách WordPress lưu trữ thông tin role.

Cách khôi phục User Role bằng WordPress Core

WordPress có sẵn một hàm dùng để tạo lại các role mặc định khi cài đặt, đó là populate_roles().

Hàm này không luôn được load sẵn khi chạy WP-CLI, vì vậy cần require đúng file core trước khi gọi.

Bước 1: Xoá option User Role hiện tại

Trước tiên, bạn có thể xoá option role đang gặp lỗi để tránh xung đột:

wp option delete wp_user_roles

Bước 2: Gọi hàm populate_roles()

Tiếp theo, chạy lệnh sau bằng WP-CLI:

wp eval '
require_once ABSPATH . "wp-admin/includes/schema.php";
require_once ABSPATH . "wp-includes/class-wp-roles.php";
populate_roles();
'

Lệnh này sẽ giúp WordPress tự động tạo lại toàn bộ User Role mặc định.

Bước 3: Kiểm tra lại danh sách role

Sau khi chạy xong, bạn có thể kiểm tra lại bằng:

wp role list

Nếu danh sách role xuất hiện trở lại, nghĩa là quá trình khôi phục đã hoàn tất.

Bước 4: Gán lại quyền Administrator

Cuối cùng, chỉ cần gán lại quyền admin cho user mong muốn:

wp user set-role username administrator

Hoặc sử dụng user ID nếu cần:

wp user set-role 1 administrator

Sau bước này, bạn có thể đăng nhập lại vào trang quản trị WordPress như bình thường.

Tổng kết

Lỗi mất toàn bộ User Role trong WordPress có thể gây gián đoạn lớn trong quá trình quản trị website, nhưng may mắn là WordPress đã cung cấp sẵn các công cụ để khôi phục lại hệ thống phân quyền.

Hy vọng bài viết này giúp bạn có thêm một phương án xử lý khi gặp sự cố tương tự trong quá trình quản lý website WordPress.

Leave a Comment