NỘI DUNG
Hiện tượng
Lỗi mất quyền trong WordPress đó là khi đăng nhập vào /wp-admin
sẽ gặp các hiện tượng sau:
- Bị trả về trang chủ.
- Vào được wp-admin nhưng báo không đủ quyền.
Nguyên nhân
Nguyên nhân thường là do một plugin nào đó có hook can thiệp vào quyền của user, nhưng do quyền ban đầu của user không chính xác hoặc không theo quy chuẩn chung nên bị lỗi mất luôn quyền admin.
Yêu cầu:
- Hosting/VPS phải có WP-CLI
- Phải SSH được ở quyền root hoặc user
Cách xử lý
Để khắc phục thì bạn hãy truy cập vào SSH của gói host đang bị lỗi. Ở đây mình dùng cPanel nên sẽ vào bằng cách cPanel => Terminal.
Sau đó tiến hành cd
(change directory) vào thư mục chứa source WordPress đang bị lỗi. Ví dụ:
$ cd public_html
$ cd dotrungquan.info
Sau khi cd vào rồi, để chắc ăn thì kiểm tra lại domain của source đó bằng lệnh sau:
Lưu ý: Nếu bạn đang chạy ở quyền root hãy thêm option --allow-root
sau mỗi lệnh
$ wp option get siteurl
Nếu kết quả trả về đúng domain gói đang bị lỗi thì làm tiếp. Kế tiếp là lấy thông tin user admin mà bạn đang muốn reset quyền, ví dụ mình grep username là admin.
$ wp user list | grep admin
Kết quả được tìm thấy
[dotrungquan@sv]$ wp user list | grep admin
1 admin admin admin@dotrungquan.info 2022-05-01 08:57:04 administrator
Ở thông tin này ta sẽ có 2 chỗ cần lưu ý:
- Cột đầu tiên là ID của username, nhớ id này để chút nữa thực hiện lệnh reset quyền.
- Cột role là quyền của user này. Trong WordPress sẽ có các quyền như customer, subscribe, editor, administrator.
Thường thì website bị lỗi là cột role họ trống không có gì cả, như ảnh đính kèm bên dưới.
Như vậy để set user này làm admin, ta dùng lệnh sau:
Trong đó, 1 là ID user ta cần thiết lập quyền.
wp user update 2 --role=administrator
Hoặc
wp user update addmin --role=administrator
Một trường hợp khác
Một trường hợp bị mất quyền khác là xung đột tên tiền tố database khi bạn sử dụng các plugin thay đổi tiền tố nhưng lại chưa thay đổi hết.
Ví dụ trong table wp_usermeta
vẫn còn khai báo các key là tên tiền tố cũ. Để fix nhanh nhất thì cài WP-CLI Rename Prefix vào:
$ wp package install iandunn/wp-cli-rename-db-prefix
Sau đó chạy lệnh sau để đưa tiền tố database về mặc định là wp.
$ wp rename-db-prefix wp
Như vậy là đã hoàn tất.