在数据库中输入用户注册信息

时间:2019-08-29 作者:Matteo Feduzi

你能告诉我这个代码有什么问题吗?

我只需在Wordpress上的用户数据库中输入这些数据。

这是我的代码:

// Inserisce utente nel DB
$user_data = [
    \'user_login\' => $nickname,
    \'user_pass\'  => wp_generate_password(),
    \'user_email\' => $email,
];
$user_id = wp_insert_user($user_data);


// Inserisce i meta dati di un utente nel DB
update_user_meta( $user_id, \'first_name\', $nome);
update_user_meta( $user_id, \'last_name\', $cognome);
$u = new WP_User( $user_id );
$u->remove_role( \'subscriber\' );
$u->add_role( \'bronze_member_ga\' );
我在wpdd\\u用户数据库结构中添加的唯一内容是当前的\\u时间戳

enter image description here

UPDATE:

问题不在用户的缓存中。这些很好用。

问题是我没有进行用户名检查。

我给他写信,然后把信寄出去。

1 个回复
SO网友:Tom J Nowell

有几件事需要注意:

上没有错误检查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_metaget_user_meta 存储附加值。在用户表中使用额外的列将导致问题,并在WordPress更新时丢失数据

相关推荐

Database size Widget

有没有办法在WordPress管理区域小部件上显示数据库大小?我不希望它出现在页面的顶部或底部,我需要它出现在我正在创建的小部件中。。谢谢