Support » Plugins » Hacks » Programmatically Add User Using wp_insert_user()

  • EL45


    I am trying to add a user to WordPress programmatically using information contained in a session from our larger site.

    I have verified that wp_insert_user is being called, no error is thrown, and the expected ID is returned. However, no user is added to the database.

    I have also tried the simpler wp_create_user however, it always returns 0.

    Someone mentioned adding include_once(ABSPATH . 'wp-admin/includes/admin.php'); That did not resolve the issue. Does anyone have any insight why the user is not being created?

Viewing 8 replies - 1 through 8 (of 8 total)
  • onelife1985


    same here.. any help would be appreciated!



    @onelife1985 I’m still unsure why it wasn’t working before. BUT… I was able to finally get wp_create_user to work.

    I accomplished this by installing the plugin as ‘must use’ (ie: in ‘wp-content/mu-plugins’ instead of ‘wp-content/plugins’)

    Also, I switched the ‘hook’ that I was using to create the user. Again, not sure why it wasn’t working before.. Wish I had more info for you, but I hope this helps, as I received little support from the community.



    @el45 thanks for your reply, indeed there is no support about this.. now when you say:

    “I accomplished this by installing the plugin as ‘must use’ (ie: in ‘wp-content/mu-plugins’ instead of ‘wp-content/plugins’)”

    which plugin are you talking about?



    A custom plugin that I am writing myself. This is where I was trying to make the wp_create_user call from. Sorry for the confusion.



    I managed to find a way around it.. this is the code I used (for future reference as well):

    global $wpdb;

    $insertUser = “INSERT INTO $wpdb->users (user_login, user_pass, user_email, user_url) VALUES (‘$user_login’, ‘$user_pass’, ‘$user_email’, ‘$user_url’)”;
    $wpdb->query( $insertUser );

    $user_id = $wpdb->get_var($wpdb->prepare(“SELECT id FROM $wpdb->users WHERE user_email = %s”, $user_email));

    $my_user = new WP_User( $user_id );
    $my_user->set_role( “Contributor” );

    don’t forget to escape all inputs for security reasons..
    Thanks for you time!!

    know this is old but had the same problem and after plenty of searching the only solution that worked for me was to include pluggable.php:
    require_once( ABSPATH . '/wp-includes/pluggable.php')

    i’m using wp 3.1

    hope this helps someone else

    The correct way to enter the password is by using wp_hash_password() function. This will ensure that the password entered in the database is actually the hash of the password which you want and that is what the wordpress login system actually expects.

    As far as I know, if you try to insert new users and pass them an ID, wordpress tries to update the user with the given ID.
    See the Example in the reference: or see the source of the function: on line 1260, where it checks for the user-ID.
    They use wp_insert_user with a given ID for updating … so the wording is a bit confusing.

    In the code from EL45 at pastebin the ID ist set. Remove the ID from the code.

    Right now I added lots of Users in WordPress 3.1.1 with the following code:

    $user_data = array(
                    'ID' => '',
                    'user_pass' => wp_generate_password(),
                    'user_login' => $loginName,
                    'display_name' => $loginName,
                    'first_name' => $firstName,
                    'last_name' => $lastName,
                    'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
                $user_id = wp_insert_user( $user_data );
                wp_set_password($lastName, $user_id);

    and I set up a default password to the user.
    There is no need to set up an email address.
    Required are at least user_pass and user_login but I didn’t tried this out.

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘Programmatically Add User Using wp_insert_user()’ is closed to new replies.