在 WordPress 中以编程方式创建管理员用户

问题描述 投票:0回答:5

最近我有一个客户来找我建立一个新网站。他们还忘记了所有登录详细信息,但他们确实具有 FTP 访问权限。

如何在 WordPress 中以编程方式创建管理员用户?

wordpress admin
5个回答
41
投票

如果放置在主题的functions.php 文件中,这将创建一个管理员用户。请根据需要更改前三个变量。

/* 
* Create an admin user silently
*/

add_action('init', 'xyz1234_my_custom_add_user');

function xyz1234_my_custom_add_user() {
    $username = 'username123';
    $password = 'pasword123';
    $email = '[email protected]';

    if (username_exists($username) == null && email_exists($email) == false) {

        // 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');
    }
}

28
投票

接受的答案有问题,并且在运行两次时会抛出致命错误,因为

$user_id
第二次将为空。该问题的解决方法:

function rndprfx_add_user() {
    $username = 'username123';
    $password = 'azerty321';
    $email = '[email protected]';

    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');

5
投票

这是创建新管理员用户的查询:

INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_status) VALUES ('newadmin', MD5('pass123'), 'firstname lastname', '[email protected]', '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');

1
投票

简单来说,您需要将此代码示例添加到您的functions.php中:

function wpb_admin_account(){
  $user = 'Username';
  $pass = 'Password';
  $email = '[email protected]';
  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');

不要忘记用您自己的数据更改用户名、密码和电子邮件。 这里有更详细的教程,可能会对您有所帮助。 如何以编程方式创建新的 WordPress 管理员用户


0
投票

查看上面提供的示例,我想提供一些额外的提示。

首先,您不能只在

init
钩子中使用此代码 - 在这种情况下,WordPress 将尝试在每次页面加载时创建一个用户。

第二,既然可以使用

wp_create_user()
功能,为什么还要使用
wp_insert_user()
呢?

正确示例:

add_action( 'init', function() ) {
    // do nothing if we didn't provide ?create_user_123=anything in the URL
    if( empty( $_GET[ 'create_user_123' ] ) ) {
        return;
    }

    wp_insert_user( 
        array(
            'user_login' => 'user login goes here', 
            'user_pass' => 'password will go here',
            'role' => 'administrator',
        )
    );

});

我从这里获取了示例https://rudrastyh.com/wordpress/create-user-programmatically.html#create-admin-user

© www.soinside.com 2019 - 2024. All rights reserved.