我的wordpress网站存在问题。我在函数文件中创建了一个带有自定义PHP的自定义HTML表单,以便在提交表单时创建用户并通过电子邮件发送给我。它工作得很好,但有一件事我想要完成:当有人创建用户名时,我希望它在用户名存在的框中右侧放置一个错误标记,如果它已经存在于数据库中。下面是我们当前处理此操作的代码,它当前转到带有错误消息的索引页面,并在5秒内重定向回到表单。我希望在提交表单之前处理验证。
if ( username_exists($user)){
echo'User already exists. Go back and try again';
die();
}
if ( !username_exists( $user ) && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
if( !is_wp_error($user_id) ) {
//user has been created
$user = new WP_User( $user_id );
$user->set_role( 'subscriber' );
wp_mail( $to, $email_subject, $message, $headers);
//Redirect
wp_redirect( 'http://www.dev.smithhonig.com/thank-you' );
exit;
} else {
//$user_id is a WP_Error object. Manage the error
}
}
}
答案 0 :(得分:2)
听起来您需要在用户名输入字段上进行AJAX调用并将其绑定到onkeyup事件。然后它将调用一个看起来像这样的PHP文件,结果将出现在div中,该div将出现在带有成功/失败消息的输入旁边。您可以将输入的文本作为名为" user"。
的url变量传递您还需要保留已有的代码,因为在用户实际提交时必须重新验证,如果失败,他们将不得不返回。
<?php
include("Path to where the username_exists function is defined");
$user = sqlescape($_GET["user"]);
if ( username_exists($user)){
echo 'That username has already been claimed.';
} else {
echo 'That username is available.';
}
?>
AJAX调用将在实际表单上(无论您输入的位置如下),看起来像这样:
<script type="text/javascript">
$( "#input_id_here" ).keyup(function() {
var requestURL = "Full URL where above PHP file is located?user=" + $(this).val();
$.ajax({
url: requestURL,
context: this,
type: 'GET',
success: function(res)
{
$('#input_error_div_id_here').html(res);
}
});
});
</script>
您还可以根据AJAX调用中返回的值为您的输入或错误div添加/删除类。 Javascript将在成功部分中添加。