有几件事需要注意:
上没有错误检查wp_insert_user, 因此,无法知道它是否失败以及为什么失败wp_insert_user 可用于设置角色等,无需跟进电话,if you read the official docs, 这些字段有参数,请不要自己修改WP核心数据库表,如果需要额外的列,请将数据存储在user meta中,当WP更新其数据库表架构时,所做的任何更改都将被撤消并覆盖,所有额外的数据都将丢失,因此,让我们这样做:
$user_data = [
\'user_login\' => $nickname,
\'user_pass\' => wp_generate_password(),
\'user_email\' => $email,
\'first_name\' => $nome,
\'last_name\' => $cognome,
\'role\' => \'bronze_member_ga\'
];
$user_id = wp_insert_user($user_data);
然后确认它确实创建了用户,如果没有,则确认失败的原因:
//On failure
if( is_wp_error( $user_id ) ) {
wp_die( "Failed to create user: " . $user_id->get_error_message() );
}
Update: 根据你的回答,你做出的一些假设似乎是不真实的,特别是
$nickname 具有值且有效
因此,让我们在填充之前添加验证和消毒步骤$user_data:
if ( empty( $nickname ) ) {
wp_die( \'Failure: $nickname is empty and must have a value\' );
}
if ( !is_email( $email ) ) {
wp_die( \'Failure: $email is not an email\' );
}
if ( empty( $nome ) ) {
wp_die( \'Failure: $nome is empty and must have a value\' );
}
if ( empty( $cognome ) ) {
wp_die( \'Failure: $cognome is empty and must have a value\' );
}
对于数据库更改,您应该使用
update_user_meta 和
get_user_meta 存储附加值。在用户表中使用额外的列将导致问题,并在WordPress更新时丢失数据