gpt4 book ai didi

php - 通过 WordPress 中的 functions.php 自动创建新用户

转载 作者:可可西里 更新时间:2023-10-31 23:05:05 26 4
gpt4 key购买 nike

我需要通过代码添加具有管理员角色的新用户,我找到了这段代码:

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

here

但是当我在 functions.php 中添加它时,出现了这个错误:

 Fatal error: Call to a member function remove_role() 
on a non-object in ..../functions.php on line ...

我也试过这段代码:

 function fb_wp_insert_user() {
$user_data = array(
'ID' => '',
'user_pass' => wp_generate_password(),
'user_login' => 'dummy',
'user_nicename' => 'Dummy',
'user_url' => '',
'user_email' => 'dummy@example.com',
'display_name' => 'Dummy',
'nickname' => 'dummy',
'first_name' => 'Dummy',
'user_registered' => '2010-05-15 05:55:55',
'role' => get_option('default_role') // Use default role or another role, e.g. 'editor'
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'fb_wp_insert_user' );

我将默认角色更改为 adminstrator 但是当我浏览用户时,我发现这个用户没有任何角色。

最佳答案

这是你的错误

Fatal error: Call to a member function remove_role() on a non-object in ..../functions.php on line ...

这是因为 $user->remove_role( 'subscriber' ); 代码,这意味着,当您使用以下代码检索新用户时

$user = get_user_by( 'id', $user_id );

它没有返回 WP_User目的。因此,如果您在非对象上调用方法,则会出现此错误,这可能是因为您在使用时没有获得 ID

$user_id = wp_create_user( $username, $password, $email );

有可能,您没有成功创建用户,在这种情况下,根据 Codex

,返回值可能是一个 对象

When successful - this function returns the user ID of the created user. In case of failure (username or email already exists) the function returns an error object, with these possible values and messages;

empty_user_login, Cannot create a user with an empty login name.

existing_user_login, This username is already registered.

existing_user_email, This email address is already registered.

所以,当你创建一个用户时,首先检查用户是否存在

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

$user_id = username_exists( $username );
if ( !$user_id && email_exists($email) == false ) {
$user_id = wp_create_user( $username, $password, $email );
if( !is_wp_error($user_id) ) {
$user = get_user_by( 'id', $user_id );
$user->set_role( 'administrator' );
}
}
}

此外,无需重新添加角色,set_role($role)将删除用户以前的角色并为用户分配新角色。阅读更多关于 wp create user 的信息和 get user byCodex 上。另外,检查 wp_generate_password()使用安全密码而不是纯文本。

更新:

add_user是一个 WordPress 函数,所以将名称更改为其他名称,例如 add_my_user

关于php - 通过 WordPress 中的 functions.php 自动创建新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com