WordPress禁止非管理员访问管理后台或wp-login.php
一般情况下个人博客网址都直接关闭了注册功能,因此不存在非管理员访问后台的问题。但如果你使用WordPress开发了多用户功能,通常已经采用自定义的表单和用户面板来替代了WordPress的后台用户面板,这时候可能要考虑禁止用户访问WordPress管理后台了。
比如我们在开发广告招标网:www.adbid.net 时,对注册用户能够发布的文章数目做了限定,这种限定是通过我们的自定义功能来实现的,起作用域也仅在我们自定义的前台面板,如果用户可以直接访问后台,那么多有的这些权限设置也就完全失效了,为此就必须禁止普通用户访问后台。同时,我们自定义了短线注册验证,而WordPress自带的注册功能是通过邮件激活,显然我们也必须禁止用户访问wp-login.php(当然也可以直接关闭注册来实现,此处我们统一采用代码实现)。具体代码如下,添加都主题functions.php即可。
// 禁止非管理员登录后台
add_action('admin_init', 'redirect_non_admin_users');
function redirect_non_admin_users() {
if (!is_super_admin() && empty($_REQUEST)) {
wp_redirect(home_url('?from=wp-admin'));
exit;
}
}
// 移除原生登录注册
add_action('login_head', 'redirect_login_form_register');
function redirect_login_form_register() {
wp_redirect(home_url('?from=wp-admin'));
exit(); // always call `exit()` after `wp_redirect`
}
1 条评论