Create an admin user programmatically in WordPress

2020-07-06 02:24发布

问题:

This is a Q&A:

Recently I had a client come to me to build a new website. They had also forgotten all their login details, but they did have FTP access.

So, how do you create an admin user via code?

回答1:

This will create an admin user if placed in a themes functions.php file.

Please change the first three variables as needed.

/* 
 * Create an admin user silently
 */    

    add_action('init', 'add_user');
    function add_user() {
        $username = 'username123';
        $password = 'pasword123';
        $email = 'drew@example.com';

        // Create the new user
        $user_id = wp_create_user( $username, $password, $email );

        // Get current user object
        $user = get_user_by( 'id', $user_id );

        // Remove role
        $user->remove_role( 'subscriber' );

        // Add role
        $user->add_role( 'administrator' );
    }


回答2:

Accepted answer has issues and will throw a fatal error when its run twice, because the $user_id will be empty the second time. A work around for the issue:

function rndprfx_add_user() {
    $username = 'username123';
    $password = 'azerty321';
    $email = 'example@example.com';

    if (username_exists($username) == null && email_exists($email) == false) {
        $user_id = wp_create_user( $username, $password, $email );
        $user = get_user_by( 'id', $user_id );
        $user->remove_role( 'subscriber' );
        $user->add_role( 'administrator' );
    }
}
add_action('init', 'rndprfx_add_user');


回答3:

Here is the queries to create a new admin user :

INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_status) VALUES ('newadmin', MD5('pass123'), 'firstname lastname', 'email@example.com', '0');

INSERT INTO wp_usermeta (umeta_id, user_id, meta_key, meta_value) VALUES (NULL, (Select max(id) FROM wp_users), 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');

INSERT INTO wp_usermeta (umeta_id, user_id, meta_key, meta_value) VALUES (NULL, (Select max(id) FROM wp_users), 'wp_user_level', '10');

It will definitly help you. :)



回答4:

Simply, you need to add this code sample in your functions.php:

function wpb_admin_account(){
  $user = 'Username';
  $pass = 'Password';
  $email = 'email@domain.com';
  if ( !username_exists( $user )  && !email_exists( $email ) ) {
    $user_id = wp_create_user( $user, $pass, $email );
    $user = new WP_User( $user_id );
    $user->set_role( 'administrator' );
  } 
}
add_action('init','wpb_admin_account');

Do not forget to change Username, Password and Email by your own data. here is more detailed tutorials that might help you. How to create a new WordPress admin user programmatically