WordPress中获取已登录用户信息的问题求助
解决方案
先修复你的PHP代码问题
你之前写的PHP代码存在语法错误,所以没有输出。正确写法如下:
<?php $current_user = wp_get_current_user(); echo $current_user->user_email; // 直接输出登录用户的邮箱 ?>
或者更简洁的写法:
<?php echo wp_get_current_user()->user_email; ?>
你之前的echo '.$userinfo.'是错误的——在PHP标签内部不需要用字符串拼接的方式输出变量,直接写变量名即可。
方法一:把用户邮箱传给JavaScript
如果需要在JS里使用用户邮箱,可以在页面的<script>标签里直接用PHP赋值:
<script> const currentUserEmail = '<?php echo wp_get_current_user()->user_email; ?>'; // 后续JS逻辑里就能直接用currentUserEmail变量 </script>
也可以添加一个隐藏表单字段,提交表单时一起传递:
<input type="hidden" name="user_email" value="<?php echo wp_get_current_user()->user_email; ?>">
表单提交后,后端处理代码可通过$_POST['user_email']拿到邮箱。
方法二:后端直接处理(推荐,更安全)
其实完全不需要用JS获取邮箱——表单提交逻辑应该放在PHP后端处理。当用户提交表单时,直接在PHP里获取当前登录用户的邮箱,再调用你的发邮件代码:
// 表单提交处理逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 获取当前登录用户信息 $current_user = wp_get_current_user(); $user_email = $current_user->user_email; // 调用你的发邮件函数,传入邮箱和PDF内容 // send_invoice_email($user_email, $pdf_file); }
这种方式避免前端暴露用户邮箱,安全性更高,也不用JS参与用户信息获取。
方法三:用WordPress REST API获取
如果一定要用JS通过API获取,可调用WordPress自带的/wp-json/wp/v2/users/me端点,已登录用户访问该端点会返回自身详细信息(包含邮箱)。示例JS代码:
fetch('/wp-json/wp/v2/users/me') .then(response => response.json()) .then(data => { const userEmail = data.email; // 在这里使用邮箱 }) .catch(error => console.error('获取用户信息失败:', error));
注意:默认情况下该端点会返回邮箱,若网站修改过REST API权限设置,需确保已登录用户能访问自身信息。
内容的提问来源于stack exchange,提问作者Umar Farooq
相关产品推荐
相关产品推荐

