描述
大多数$userdata
数组字段具有与值关联的过滤器。例外情况有“ID”、“rich_editing”、“syntax_highlighting”、“comment_shortcuts”、“admin_color”、“use_ssl”、“user_registered”、“user_activation_key”、“spam”和“role”。过滤器的前缀为‘pre_user_’,后跟字段名。使用“description”的示例将具有名为‘pre_user_description’的过滤器。
参数
- $userdata
-
(array|object|WP_User)(必填) 用户数据参数的数组、对象或WP_User对象。
- 'ID'
(int) 用户ID。如果提供,将更新用户。 - 'user_pass'
(string) 纯文本用户密码。 - 'user_login'
(string) 用户的登录用户名。 - 'user_nicename'
(string) URL友好的用户名。 - 'user_url'
(string) 用户URL。 - 'user_email'
(string) 用户电子邮件地址。 - 'display_name'
(string) 用户的显示名称。默认值是用户的用户名。 - 'nickname'
(string) 用户的昵称。默认值是用户的用户名。 - 'first_name'
(string) 用户的名字。对于新用户,如果未指定$display_name
,将用来构建用户显示名称的第一部分。 - 'last_name'
(string) 用户的姓氏。对于新用户,如果未指定$display_name
,则将用于构建用户显示名称的第二部分。 - 'description'
(string) 用户的简历描述。 - 'rich_editing'
(string) 是否为用户启用富文本编辑器。接受'true'或'false'作为字符串,而不是布尔值。默认值为'true'。 - 'syntax_highlighting'
(string) 是否为用户启用富代码编辑器。接受'true'或'false'作为字符串,而不是布尔值。默认值为'true'。 - 'comment_shortcuts'
(string) 是否为用户启用评论审核键盘快捷键。接受'true'或'false'作为字符串,而不是布尔值。默认值为'false'。 - 'admin_color'
(string) 用户的管理配色方案。默认值为'fresh'。 - 'use_ssl'
(bool) 用户是否应始终通过https访问后台管理。默认值为false。 - 'user_registered'
(string) 用户在UTC注册的日期。格式为“Y-m-d H:i:s。 - 'user_activation_key'
(string) 密码重置键。默认为空。 - 'spam'
(bool) 仅限多站点。用户是否被标记为垃圾信息。默认值为false。 - 'show_admin_bar_front'
(string) 是否在网站前端为用户显示管理栏。接受'true'或'false'作为字符串,而不是布尔值。默认值为'true'。 - 'role'
(string) 用户的角色。 - 'locale'
(string) 用户的区域设置。默认为空。 - 'meta_input'
(array) 由meta键和自定义用户meta值组成的数组。默认为空。
- 'ID'
返回
(int|WP_Error) 新创建的用户ID或WP_Error对象(如果无法创建该用户)。
源码
更新日志
版本 | 描述 |
---|---|
5.9.0 | meta_input 字段可以传递给$userdata ,以允许添加用户meta数据。 |
5.3.0 | spam 字段可以传递给$userdata (仅限多站点)。 |
4.7.0 | locale 字段可以传递给$userdata 。 |
3.6.0 | aim 、jabber 和yim 字段已作为新安装的默认用户联系方式删除。见wp_get_user_contact_methods()。 |
2.0.0 | 开始引入 |
使用示例
wp_insert_user
函数需要一个用户数据数组(或对象)来创建用户。$userdata
的完整阵列版本如下:$userdata = array( 'ID' => 0, //(int) User ID. If supplied, the user will be updated. 'user_pass' => '', //(string) The plain-text user password. '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|bool) Whether to enable the rich-editor for the user. False if not empty. 'syntax_highlighting' => '', //(string|bool) Whether to enable the rich code editor for the user. False if not empty. 'comment_shortcuts' => '', //(string|bool) Whether to enable comment moderation keyboard shortcuts for the user. 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. Format is 'Y-m-d H:i:s'. 'show_admin_bar_front' => '', //(string|bool) Whether to display the Admin Bar for the user on the site's front end. Default true. 'role' => '', //(string) User's role. 'locale' => '', //(string) User's locale. Default empty. );
实例
下面是一个示例,显示了如何在个人资料网站字段已填充的情况下插入新用户。
$website = "http://example.com"; $userdata = array( 'user_login' => 'login_name', 'user_url' => $website, 'user_pass' => NULL // When creating an user, `user_pass` is expected. ); $user_id = wp_insert_user( $userdata ) ; // On success. if ( ! is_wp_error( $user_id ) ) { echo "User created : ". $user_id; }
数据库中的user_url长度限制为100。
但是wp_insert_user不会返回WP_Error。如果超过此大小,则返回0。
这可能是一个很好的改进,因为我刚刚过去30分钟,找到了问题所在。
提前感谢,
:)
'role'
应该是小写,否则它将无法工作。我的朋友Gregory因为使用了不适当的函数来加密密码而被10次踩,但我觉得大家可能没有理解他关于在使用
wp_insert_user()
而不是wp_update_user()
更新用户时需要手动加密密码的观点。“在wp_update_user()中的加密,如果直接调用,则为明文。” – 第1760行。
因此正确的用法是smth,如:
$existing_user_id = wp_insert_user( array( /** * The existing user id */ 'ID' => $existing_user_id, /** * I think you need to supply the user login though i'm not too sure, * When i tried this without passing in user_login it gave me errors idk why * User login won't change tho as usernames in wordpress are permanent */ 'user_login' => $user_login, /** * Hash the new password when updating an existing user using built in hashing function */ 'user_pass' => wp_hash_password( $new_password ), ) ) ;
下面是一个演示如何插入新用户的示例。
$data = array( 'user_login' => 'login_name', // the user's login username. 'user_pass' => 'login_password', // not necessary to hash password ( The plain-text user password ). 'show_admin_bar_front' => false // display the Admin Bar for the user 'true' or 'false' ); $user_id = wp_insert_user( $data ); if ( ! is_wp_error( $user_id ) ) { echo "User ID : ". $user_id; }
$userdata必须转义。以这种方式创建的帐户您将无法登录:
$userdata = array( 'user_login' => 'test', 'user_pass' => "123'456", 'user_email' => 'test@example.com', ); wp_insert_user( $userdata );
以下是正确的代码:
wp_insert_user( wp_slash( $userdata ) );
P.S. 在 WP 5.5.3 中测试
键入时,user_login不能为空
$userdata = array( 'user_email' => $email, 'first_name' => $fname, 'last_name' => $lname, 'role' => 'subscriber', );
函数返回
WP_Error Object ( [errors] => Array ( [empty_user_login] => Array ( [0] => Cannot create a user with an empty login name. ) ) [error_data] => Array ( ) [additional_data:protected] => Array ( ) )
文档中说show_admin_bar_front可以是布尔值,但我想这行不通,在第一次使用此函数时,我的意思是,在创建用户时,必须使用字符串类型。
如果您决定使用wp_insert_user()更新现有用户,则必须使用md5函数对密码进行编码。可能这是一个错误。
// Tested with version WP 4.5 $userdata = array( 'ID' => $user_id, // ID of existing user 'user_login' => 'login_name', 'user_pass' => md5($new_password) // no plain password here! ); $user_id = wp_insert_user( $userdata ) ;