如何通过functions.php限制WordPress未授权用户访问并实现登录跳转?
WordPress 未授权用户自动重定向登录页实现方案(无需插件)
直接在主题的functions.php文件中添加以下代码,即可实现需求:
1. 未授权用户重定向至自定义登录页
function redirect_unauthorized_users() { // 排除无需重定向的页面:自定义登录页、后台、默认登录/注册/找回密码页 $excluded_pages = array( 'page-login', // 替换为你的自定义登录页slug 'wp-login.php', 'wp-admin' ); // 获取当前页面的URI和slug $current_uri = $_SERVER['REQUEST_URI']; $current_slug = get_post_field('post_name', get_post()); // 判断用户未登录且当前页面不在排除列表时执行重定向 if (!is_user_logged_in()) { $needs_redirect = true; foreach ($excluded_pages as $page) { if (str_contains($current_uri, $page) || $current_slug === $page) { $needs_redirect = false; break; } } if ($needs_redirect) { wp_redirect(home_url('/page-login/')); // 替换为你的自定义登录页完整URL exit; } } } add_action('template_redirect', 'redirect_unauthorized_users');
2. 登录成功后跳转至首页
添加以下代码覆盖默认登录跳转行为:
function login_redirect_to_home($redirect_to, $request, $user) { // 所有用户登录后统一跳转到首页 return home_url(); } add_filter('login_redirect', 'login_redirect_to_home', 10, 3);
注意事项
- 请将代码中的
page-login和/page-login/替换为你实际的自定义登录页slug和URL路径 - 修改
functions.php前务必备份文件,避免语法错误导致网站无法访问 - 测试时先退出登录,验证未授权用户访问任意页面是否会被重定向;登录后确认是否正常跳转至首页
- 若自定义登录页使用了自定义表单,需确保登录逻辑通过
wp_signon()等WordPress原生函数处理,保证用户状态正常生效
内容的提问来源于stack exchange,提问作者Stanislav Shokarev
相关产品推荐
相关产品推荐

