钩子文档

user_register

💡 云策文档标注

概述

user_register 是一个 WordPress 动作钩子,在新用户注册后立即触发,允许开发者访问新用户的 ID 和数据。它常用于保存自定义注册表单传递的额外用户元数据。

关键要点

  • 触发时机:新用户注册后立即触发,用户 ID 已添加到数据库。
  • 参数:$user_id(用户 ID)和 $userdata(传递给 wp_insert_user() 的原始数据数组)。
  • 注意事项:触发时并非所有用户元数据都已存储(如 first_name 和 last_name 可能未保存),密码已加密,验证应在 registration_errors 钩子中进行。
  • 典型用途:保存自定义注册字段、发送欢迎邮件或更新用户数据。

代码示例

add_action( 'user_register', 'myplugin_registration_save', 10, 1 );

function myplugin_registration_save( $user_id ) {
    if ( isset( $_POST['first_name'] ) )
        update_user_meta($user_id, 'first_name', $_POST['first_name']);
}

注意事项

  • 避免在 user_register 钩子中进行字段验证,应使用 registration_errors 钩子。
  • 注意用户数据存储状态,部分元数据可能尚未保存到数据库。

📄 原文内容

Fires immediately after a new user is registered.

Parameters

$user_idint
User ID.
$userdataarray
The raw array of data passed to wp_insert_user() .

More Arguments from wp_insert_user( … $userdata )

An array, object, or WP_User object of user data arguments.

  • ID int
    User ID. If supplied, the user will be updated.
  • user_pass string
    The plain-text user password for new users.
    Hashed password for existing users.
  • user_login string
    The user’s login username.
  • user_nicename string
    The URL-friendly user name.
  • user_url string
    The user URL.
  • user_email string
    The user email address.
  • display_name string
    The user’s display name.
    Default is the user’s username.
  • nickname string
    The user’s nickname.
    Default is the user’s username.
  • first_name string
    The user’s first name. For new users, will be used to build the first part of the user’s display name if $display_name is not specified.
  • last_name string
    The user’s last name. For new users, will be used to build the second part of the user’s display name if $display_name is not specified.
  • description string
    The user’s biographical description.
  • rich_editing string
    Whether to enable the rich-editor for the user.
    Accepts 'true' or 'false' as a string literal, not boolean. Default 'true'.
  • syntax_highlighting string
    Whether to enable the rich code editor for the user.
    Accepts 'true' or 'false' as a string literal, not boolean. Default 'true'.
  • comment_shortcuts string
    Whether to enable comment moderation keyboard shortcuts for the user. Accepts 'true' or 'false' as a string literal, not boolean. Default 'false'.
  • admin_color string
    Admin color scheme for the user. Default 'fresh'.
  • use_ssl bool
    Whether the user should always access the admin over https. Default false.
  • user_registered string
    Date the user registered in UTC. Format is ‘Y-m-d H:i:s’.
  • user_activation_key string
    Password reset key. Default empty.
  • spam bool
    Multisite only. Whether the user is marked as spam.
    Default false.
  • show_admin_bar_front string
    Whether to display the Admin Bar for the user on the site’s front end. Accepts 'true' or 'false' as a string literal, not boolean. Default 'true'.
  • role string
    User’s role.
  • locale string
    User’s locale. Default empty.
  • meta_input array
    Array of custom user meta values keyed by meta key.
    Default empty.

More Information

This action hook allows you to access data for a new user immediately after they are added to the database. The user id is passed to hook as an argument.

Not all user meta data has been stored in the database when this action is triggered. For example, nickname is in the database but first_name and last_name are not (as of v3.9.1). The password has already been encrypted when this action is triggered.

Typically, this hook is used for saving additional user meta passed by custom registration forms.

Source

do_action( 'user_register', $user_id, $userdata );

Changelog

Version Description
5.8.0 The $userdata parameter was added.
1.5.0 Introduced.

User Contributed Notes

  1. Skip to note 4 content

    Example migrated from Codex:

    This example will save a first_name field passed by a custom registration field.

    Also, keep in mind that validation of registration fields should not be performed within this hook! Validate using the registration_errors hook instead (the user_register hook will not be called if registration_errors validation fails).

    add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
    
    function myplugin_registration_save( $user_id ) {
    
        if ( isset( $_POST['first_name'] ) )
            update_user_meta($user_id, 'first_name', $_POST['first_name']);
    
    }