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(useri​d,key, $single)

获取用户的自定义字段(元数据)。

$phone = get_user_meta($user_id, 'phone', true);

update_user_meta(useri​d,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(blogi​d,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(useri​d,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 时,数据会被自动缓存。

通过组合这些函数,可以实现几乎所有与用户相关的功能需求。

推荐模板