wordpress与用户相关的函数和常见调用方法
wordpress 2025-07-26 9
在WordPress中,与用户相关的函数主要集中在用户身份验证、用户信息获取、权限检查、用户数据更新等方面。以下是分类整理的核心函数及其常见调用方法:
用户身份认证
is_user_logged_in()
检查当前用户是否已登录。
if ( is_user_logged_in() ) {
echo '欢迎回来!';
} else {
echo '请登录。';
}
wp_login_url() / wp_logout_url()
获取登录/登出链接。
<a href="<?php echo wp_login_url(); ?>">登录</a>
<a href="<?php echo wp_logout_url(home_url()); ?>">登出</a>
get_current_user_id()
直接获取当前用户的 ID(整数)。
$user_id = get_current_user_id();
获取/更新用户数据
get_userdata($user_id)
通过用户 ID 获取用户的完整信息(WP_User 对象)。
$user = get_userdata(1); // 获取 ID 为 1 的用户
echo $user->display_name;
get_user_meta(userid,key, $single)
获取用户的自定义字段(元数据)。
$phone = get_user_meta($user_id, 'phone', true);
update_user_meta(userid,key, $value)
更新用户的自定义字段。
update_user_meta($user_id, 'phone', '27149');
wp_update_user($userdata)
更新用户的基本信息(如邮箱、密码等)。
wp_update_user([
'ID' => $user_id,
'user_email' => 'new@example.com'
]);
用户权限检查
current_user_can($capability)
检查当前用户是否有特定权限(角色或能力)。
if ( current_user_can('edit_posts') ) {
echo '可以编辑文章!';
}
// 检查特定用户的权限
$user = get_userdata($user_id);
if ( user_can($user, 'manage_options') ) {
echo '是管理员!';
}
current_user_can_for_blog(blogid,capability)
在多站点网络中检查用户对特定站点的权限。
用户注册与登录
wp_create_user(username,password, $email)
直接创建新用户(无需额外验证)。
$user_id = wp_create_user('newuser', 'password123', 'user@example.com');
wp_insert_user($userdata)
更灵活的用户创建/更新函数(可指定更多字段)。
$user_id = wp_insert_user([
'user_login' => 'newuser',
'user_pass' => 'password123',
'user_email' => 'user@example.com',
'role' => 'subscriber'
]);
wp_authenticate(username,password)
验证用户名和密码(返回 WP_User 或 WP_Error)。
$user = wp_authenticate('username', 'password');
if ( is_wp_error($user) ) {
echo $user->get_error_message();
}
用户角色与权限
get_userdata($user_id)->roles
获取用户的角色列表。
$user = get_userdata($user_id);
$roles = $user->roles; // 返回数组,如 ['administrator']
add_role() / remove_role()
动态添加或删除全局角色(谨慎使用)。
add_role('custom_role', '自定义角色', ['read' => true]);
头像与作者信息
get_avatar(userid,size)
获取用户头像(Gravatar 或自定义)。
echo get_avatar($user_id, 64);
get_the_author_meta(field,user_id)
获取作者特定信息(如个人简介)。
echo get_the_author_meta('description', $user_id);
登录状态钩子
钩子示例
// 登录成功后跳转
add_action('wp_login', function($user_login, $user) {
wp_redirect(home_url('/dashboard'));
exit;
}, 10, 2);
// 用户注册后发送邮件
add_action('user_register', function($user_id) {
wp_mail(get_userdata($user_id)->user_email, '欢迎注册', '感谢您的加入!');
});
常见场景示例
场景1:限制内容仅登录用户可见
if ( is_user_logged_in() ) {
echo 'VIP 内容仅对登录用户可见!';
} else {
echo '请登录后查看。';
}
场景2:显示当前用户的自定义字段
$user_id = get_current_user_id();
$phone = get_user_meta($user_id, 'phone', true);
echo '您的电话:' . esc_html($phone);
场景3:检查用户是否为作者
if ( get_current_user_id() === get_the_author_meta('ID') ) {
echo '这是您的文章!';
}
注意事项
权限控制:始终使用 current_user_can() 而非直接检查角色。
数据安全:更新用户数据时使用 sanitize_text_field() 等函数过滤输入。
缓存:频繁调用 get_user_meta 时,数据会被自动缓存。
通过组合这些函数,可以实现几乎所有与用户相关的功能需求。