jlil
Necesito agregar un nuevo usuario con función de administrador a través del código, y encontré este código:
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' );
}
aquí
Pero cuando lo agregué functions.php
tengo este error:
Fatal error: Call to a member function remove_role()
on a non-object in ..../functions.php on line ...
También probé este código:
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' );
Cambié el rol predeterminado a adminstrator
pero cuando navegué por los usuarios, encontré a este usuario sin ningún rol.
el alfa
este es tu error
Error fatal: llamar a una función miembro remove_role() en un no objeto en …./functions.php en línea …
es por $user->remove_role( 'subscriber' );
código y significa que, cuando está utilizando el siguiente código para recuperar el nuevo usuario
$user = get_user_by( 'id', $user_id );
No está devolviendo un WP_Usuario objeto. Entonces, si llama a un método en un no objeto, aparece este error y podría deberse a que no obtuvo un ID
cuando usaste
$user_id = wp_create_user( $username, $password, $email );
Es posible que no haya creado correctamente un usuario y, en este caso, el valor de retorno podría ser un object
de acuerdo a Codex
Cuando tiene éxito, esta función devuelve el ID de usuario del usuario creado. En caso de falla (ya existe el nombre de usuario o el correo electrónico), la función devuelve un objeto de error, con estos posibles valores y mensajes;
empty_user_login, no se puede crear un usuario con un nombre de inicio de sesión vacío.
exist_user_login, este nombre de usuario ya está registrado.
existente_user_email, esta dirección de correo electrónico ya está registrada.
Entonces, cuando esté creando un usuario, primero verifique si el usuario existe o no.
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' );
}
}
}
Además, no es necesario quitar y agregar el rol, set_role ($ rol) eliminará los roles anteriores del usuario y le asignará el nuevo. Leer más sobre wp crear usuario y obtener usuario por en Codex
. Además, verifique el wp_generar_contraseña() para utilizar una contraseña segura en lugar de texto sin formato.
Actualizar :
agregar usuario es una función de WordPress, así que cambie el nombre a algo más como, add_my_user
.
-
@RCV, ingrese el código completo, uso su código y veo esto: No se puede volver a declarar add_user() (anteriormente declarado en ..\functions.php:909) en ..\wp-admin\includes\user.php en la línea 18. 909 es: $nombre de usuario = ‘nombre de usuario123’; . tal vez no te entiendo bien. por favor ponga su código completo.
– Jlil
7 noviembre 2013 a las 20:55
-
¡¡Ooooops mismo error!! Error fatal: no se puede volver a declarar add_user() (anteriormente declarado en ..\functions.php:909) en ..\wp-admin\includes\user.php en la línea 18, 909 es $username = ‘username123’;
– Jlil
7 de noviembre de 2013 a las 21:08
-
Revisa la actualización, Cambiado
add_user
aadd_my_user
@tecno.– El Alfa
7 de noviembre de 2013 a las 21:11
-
Si no está usando esto en un complemento, no olvide usar: require_once “wp-load.php”;
– Paulo A. Costa
7 de julio de 2019 a las 2:46
Pat J.
Compruebe para asegurarse de que wp_create_user()
Realmente creado el usuario:
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' );
}
editado: Según los comentarios a continuación, parece que el usuario ya se ha creado. He actualizado el código para verificar eso. (En esencia, ahora, si el usuario aún no existe, se creará).
Referencias
-
Error de análisis: error de sintaxis, inesperado ‘;’ en ..\functions.php en la línea 917 . la línea 917 es: echo( “Error: ” . $user_id->get_error_message();
– Jlil
7 de noviembre de 2013 a las 20:03
-
Vaya, arreglé mi error tipográfico.
– Pat J.
7 de noviembre de 2013 a las 20:04
-
Error fatal: no se puede volver a declarar add_user() (anteriormente declarado en ..\functions.php:909) en ..\wp-admin\includes\user.php en la línea 18 909 es: $username = ‘username123’;
– Jlil
7 de noviembre de 2013 a las 20:08
-
@AmalMurali ¿Eh? Si
wp_create_user()
devuelve unWP_Error
objeto, verifico cuál es el error. De lo contrario,$user
debería ser unWP_User
objeto, a menos que, por alguna razón,wp_create_user()
devuelto ninguno de los dos un ID entero ni unWP_Error
objeto.– Pat J.
7 de noviembre de 2013 a las 20:16
-
+1 @AmalMurali, por buena actitud, sigue adelante 🙂
– El Alfa
7 de noviembre de 2013 a las 20:28
$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 );
-
Agregue este código en el archivo function.php. Si cualquier ayuda por favor no sea tímido por favor llame.
– Jakir Hossain
4 de febrero de 2015 a las 8:31
soufiane
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');