WordPress:实现已登录唯一用户的页面重定向需求
解决WordPress用户个人主页重定向问题
你遇到的核心问题是wp_get_current_user()返回的是WP_User对象,而非直接的字符串用户名,直接拼接URL会触发对象转字符串的错误。只需调用对象的user_login属性就能拿到正确的用户名,以下是完整实现方案:
步骤1:获取正确的用户名
替换你原有的代码,改用以下方式提取当前登录用户的用户名:
// 获取当前登录用户对象 $current_user = wp_get_current_user(); // 从对象中提取URL对应的用户名(user_login 为用户登录名,匹配URL中的username) $username = $current_user->user_login;
步骤2:实现动态重定向逻辑
将重定向逻辑通过WordPress的template_redirect钩子挂载,确保页面加载时触发判断:
add_action('template_redirect', 'redirect_member_profile_to_edit'); function redirect_member_profile_to_edit() { // 仅对已登录用户生效 if (!is_user_logged_in()) { return; } $current_user = wp_get_current_user(); $username = $current_user->user_login; // 拼接用户个人主页的基准URL $target_base_url = home_url("/members/{$username}/"); // 获取当前访问的完整URL $current_url = home_url($_SERVER['REQUEST_URI']); // 若当前访问的是个人主页根路径,执行重定向 if ($current_url === $target_base_url) { // 构建目标重定向地址 $redirect_url = home_url("/members/{$username}/profile/edit/group/1/"); // 执行302临时重定向(如需永久重定向可改为301) wp_redirect($redirect_url, 302); // 必须终止后续代码执行 exit; } }
补充说明
- 若你的URL中使用的是用户别名而非登录名,可将
$current_user->user_login替换为$current_user->user_nicename。 - 代码可添加到当前主题的
functions.php文件,或自定义插件中。
内容的提问来源于stack exchange,提问作者Richard Gill
相关产品推荐
相关产品推荐

