我想知道这个代码有什么问题:
if ( !empty( $_POST[\'email\'] ) ){
if (!is_email(esc_attr( $_POST[\'email\'] )))
$error[] = __(\'The Email you entered is not valid. please try again.\', \'profile\');
elseif(email_exists(esc_attr( $_POST[\'email\'] )) != $current_user->ID )
$error[] = __(\'This email is already used by another user. try a different one.\', \'profile\');
else{
wp_update_user( array (\'ID\' => $current_user->ID, \'user_email\' => esc_attr( $_POST[\'email\'] )));
}
}
这对我不起作用,我尝试了几次修改,但都没有成功。它不断警告我“此电子邮件已被其他用户使用。”但事实并非如此!好像这段代码验证得不好。
PS:我从这里得到了这个代码:How to edit a user profile on the front end?
最合适的回答,由SO网友:cybmeta 整理而成
你比较了email_exists
具有的函数$current_user->ID
. 如果存在电子邮件,email_exists()
返回使用该电子邮件的用户的ID,如果该电子邮件不存在,则返回false。想象您正在检查未使用的电子邮件,email_exists()
返回false和此if
将验证:
elseif(email_exists(esc_attr( $_POST[\'email\'] ) ) != $current_user->ID )
你看到错误了吗?
您应该使用以下内容修改上述行:
elseif( email_exists(esc_attr( $_POST[\'email\'] ) ) && email_exists(esc_attr( $_POST[\'email\'] )) != $current_user->ID )