WordPress禁止普通用户访问后台的详细方法步骤实战教程
在 WordPress 中禁止普通用户(如订阅者 subscriber或贡献者 contributor)访问后台管理界面(/wp-admin),有多种方法可以实现。
为什么要禁止WordPress普通用户访问后台?
通常而言为了网站安全着想,推荐除特定用户如:“管理员、编辑、作者”以外的用户是不能访问我们的后台的。
那么要做到这点,我们要怎么实现呢!本文就是围绕这个问题而存在的一篇文章,要禁止WordPress 普通用户访问后台可以通过以下几种方式实现:
方法 1:使用代码(推荐)
在主题的 functions.php文件或自定义插件中添加以下代码:
/**
* 禁止订阅者(Subscriber)和贡献者(Contributor)访问后台
*/
add_action('admin_init', 'restrict_admin_access');
function restrict_admin_access() {
// 允许管理员、编辑、作者访问后台
if (current_user_can('edit_posts')) {
return;
}
// 如果是AJAX请求、REST API请求或特定页面(如个人资料页),允许访问
if (defined('DOING_AJAX') && DOING_AJAX) {
return;
}
// 如果不是管理员/编辑/作者,则重定向到首页
wp_redirect(home_url());
exit;
}
代码说明:
current_user_can('edit_posts')检查用户是否有edit_posts权限(作者author、编辑editor、管理员administrator默认拥有此权限)。DOING_AJAX检查是否是 AJAX 请求(避免影响前端功能)。- 如果用户无权访问后台,则重定向到首页(
home_url())。
方法 2:使用插件
如果不想修改代码,可以使用以下插件:
- Remove Dashboard Access
- 下载地址:WordPress 插件库
- 功能:允许设置哪些用户角色可以访问后台。
- Adminimize
- 下载地址:WordPress 插件库
- 功能:可以精细控制不同用户角色的后台访问权限。
方法 3:修改 .htaccess(适用于 Apache 服务器)
如果希望从服务器层面限制访问,可以在网站根目录的 .htaccess文件中添加以下规则:
# 禁止订阅者访问 /wp-admin/
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login(.*)$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
说明:
- 此规则会阻止未登录用户访问
/wp-admin/和/wp-login.php。 - 但不如 PHP 代码灵活,可能影响某些插件功能(如 REST API)。
方法 4:限制特定用户角色(更严格的权限控制)
如果只想允许 管理员 访问后台,可以修改 functions.php:
add_action('admin_init', 'restrict_admin_to_admins_only');
function restrict_admin_to_admins_only() {
if (!current_user_can('manage_options')) { // 仅管理员可以访问
wp_redirect(home_url());
exit;
}
}
注意事项
- 订阅者(Subscriber) 默认只能管理个人资料,禁止他们访问后台通常不会影响网站功能。
- 贡献者(Contributor) 可以撰写文章但不能发布,如果禁止他们访问后台,他们将无法提交文章。
- 测试时 请确保至少有一个管理员账户,避免所有用户被锁定。
最终推荐方案
最佳实践:
代码方式(方法 1)是最灵活、最推荐的方式,不会影响网站性能,且可以精细控制权限。
插件方式(方法 2)适合不想修改代码的用户,但可能增加插件依赖。
.htaccess 方式(方法 3)适用于服务器级限制,但不够灵活。