기능을 통해 자동으로 새 사용자를 생성합니다.WordPress의 php
코드를 통해 관리자 역할을 가진 새 사용자를 추가해야 하는데 다음 코드를 발견했습니다.
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' );
}
근데 제가 이걸 넣었을 때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
사용자들을 검색해보니 역할이 없는 사용자라는 것을 알 수 있었습니다.
이것은 당신의 오류입니다.
치명적 오류: .../functions의 비개체에 있는 멤버 함수 remove_role()을 호출합니다.php 온라인...
그 이유는$user->remove_role( 'subscriber' );
다음 코드를 사용하여 새 사용자를 검색할 때
$user = get_user_by( 'id', $user_id );
WP_User 개체를 반환하지 않습니다.따라서 오브젝트가 아닌 다른 오브젝트에 대해 메서드를 호출하면 이 에러가 표시되며 이 에러가 발생하지 않았기 때문에ID
사용했을 때
$user_id = wp_create_user( $username, $password, $email );
사용자를 생성하지 못했을 수 있으며 이 경우 반환값은object
에 따르면Codex
성공한 경우 - 이 함수는 생성된 사용자의 사용자 ID를 반환합니다.오류가 발생한 경우(사용자 이름 또는 이메일이 이미 존재하는 경우), 함수는 다음과 같은 가능한 값과 메시지를 포함한 오류 개체를 반환합니다.
empty_user_login. 로그인 이름이 비어 있는 사용자는 생성할 수 없습니다.
existing_user_login. 이 사용자 이름은 이미 등록되어 있습니다.
existing_user_email. 이 이메일 주소는 이미 등록되어 있습니다.
따라서 사용자를 생성할 때 먼저 해당 사용자의 존재 여부를 확인합니다.
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 and get user by on에 대한 자세한 내용은 이쪽Codex
또한 wp_generate_password()를 체크하여 일반 텍스트 대신 안전한 비밀번호를 사용합니다.
업데이트:
add_user는 WordPress 함수이므로 이름을 다음과 같이 변경합니다.add_my_user
.
가 실제로 사용자를 생성했는지 확인합니다.
add_action('init', 'add_user');
function add_user() {
$username = 'username123';
$password = 'pasword123';
$email = 'drew@example.com';
$user = get_user_by( 'email', $email );
if( ! $user ) {
// Create the new user
$user_id = wp_create_user( $username, $password, $email );
if( is_wp_error( $user_id ) ) {
// examine the error message
echo( "Error: " . $user_id->get_error_message() );
exit;
}
// Get current user object
$user = get_user_by( 'id', $user_id );
}
// Remove role
$user->remove_role( 'subscriber' );
// Add role
$user->add_role( 'administrator' );
}
편집: 아래 코멘트에 의하면, 유저는 이미 작성되어 있는 것 같습니다.그것을 확인하기 위해서 코드를 갱신했습니다.(기본적으로 사용자가 존재하지 않는 경우는 작성됩니다.)
레퍼런스
$userData = array(
'user_login' => 'username',
'first_name' => 'First',
'last_name' => 'Last',
'user_pass' => 'password',
'user_email' => 'you@mail.com',
'user_url' => '',
'role' => 'administrator'
);
wp_insert_user( $userData );
function kechweb_create_admin_account(){
$user = 'Username'; <br />
$pass = 'Password';<br />
$email = 'email@domain.com';<br />
//if a username with the email ID does not exist, create a new user account<br />
if ( !username_exists( $user ) && !email_exists( $email ) ) {<br />
$user_id = wp_create_user( $user, $pass, $email ); <br />
$user = new WP_User( $user_id ); <br />
//Set the new user as a Admin <br />
$user->set_role( 'administrator' ); <br />
} } <br />
add_action('init','kechweb_create_admin_account');
언급URL : https://stackoverflow.com/questions/19845192/create-new-user-automatically-via-functions-php-in-wordpress
'programing' 카테고리의 다른 글
Node.js에서 CSV를 JSON으로 변환하는 방법 (0) | 2023.03.21 |
---|---|
ng-max-length가 내 모델을 나사로 고정합니다. (0) | 2023.03.21 |
제품 카테고리에 사용자 정의 필드 추가 (0) | 2023.03.16 |
Mockito와 함께 봄의 자동 전원 @Value 필드를 조롱하려면 어떻게 해야 하나요? (0) | 2023.03.16 |
JsonConvert 사용.Deserialize Object를 사용하여 Json을 C# POCO 클래스로 역직렬화합니다. (0) | 2023.03.16 |