最近我有一个客户来找我建立一个新网站。他们还忘记了所有登录详细信息,但他们确实具有 FTP 访问权限。
如何在 WordPress 中以编程方式创建管理员用户?
如果放置在主题的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');
}
}
接受的答案有问题,并且在运行两次时会抛出致命错误,因为
$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');
这是创建新管理员用户的查询:
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');
简单来说,您需要将此代码示例添加到您的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 管理员用户
查看上面提供的示例,我想提供一些额外的提示。
首先,您不能只在
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