当前浏览:首页 / WordPress函数 / wp_insert_user()

wp_insert_user( array|object|WP_User $userdata )

将用户插入数据库

insert

usermore...


描述

大多数$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值组成的数组。默认为空。

返回

(int|WP_Error) 新创建的用户ID或WP_Error对象(如果无法创建该用户)。



源码

查看源码 官方文档


更新日志

版本描述
5.9.0meta_input字段可以传递给$userdata,以允许添加用户meta数据。
5.3.0spam字段可以传递给$userdata(仅限多站点)。
4.7.0locale字段可以传递给$userdata
3.6.0aimjabberyim字段已作为新安装的默认用户联系方式删除。见wp_get_user_contact_methods()
2.0.0开始引入

使用示例

  • 示例1

    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.
    
    );
  • 示例2

    实例

    下面是一个示例,显示了如何在个人资料网站字段已填充的情况下插入新用户。

    $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;
    }
    
  • 示例3

    数据库中的user_url长度限制为100。

    但是wp_insert_user不会返回WP_Error。如果超过此大小,则返回0。

    这可能是一个很好的改进,因为我刚刚过去30分钟,找到了问题所在。

    提前感谢,

    :)

  • 示例4

    'role'应该是小写,否则它将无法工作。

  • 示例5

    我的朋友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 ),
    
    ) ) ;
  • 示例6

    下面是一个演示如何插入新用户的示例。

    $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;
    	
    }
    
  • 示例7

    $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 中测试

  • 示例8

    键入时,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 ( ) )

  • 示例9

    文档中说show_admin_bar_front可以是布尔值,但我想这行不通,在第一次使用此函数时,我的意思是,在创建用户时,必须使用字符串类型。

  • 示例10

    如果您决定使用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 ) ;