我目前在我的页面上创建了一个工作注册表。这是一个HTML表单,我编写了PHP,让它在我们的WP\\U用户表中创建用户,并通过电子邮件向我们发送表单中的信息。PHP在函数中。php文件,它的工作没有问题,但当前必须提交,如果创建的用户名已经存在,它将在空白索引页上显示错误消息,然后重定向回表单。我们希望它在表单上验证并显示用户名是否可用。我认为这必须用AJAX来完成,但我不确定。下面是函数中的PHP代码。php:
if (username_exists($user)){
echo \'Username already exists. Please wait while we redirect you back to the form\';
die("<meta http-equiv=\\"refresh\\" content=\\"5;url=".$_SERVER[\'HTTP_REFERER\']."\\"/>");
}
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
}
}
同样,这非常有效,但我们希望在表单上单击用户名字段时尝试一个选项进行验证。我不太熟悉AJAX,也不太熟悉在哪里为WP实现它,所以我想在这里使用最佳实践。非常感谢。
更新时间:
下面是我正在使用的AJAX调用的一些代码。
jQuery(document).ready(function(){
jQuery(\'#username\').on(\'change\', function(){
let user = jQuery(this).val();
jQuery.ajax({
type: \'POST\',
url: \'<WP_AJAX_URL_HERE>\',
data: {action: \'verify_username\', username: user},
success: function(data){
console.log(data);
// Write code to show the message to user here
},
error: function(err){
console.log(err);
}
});
});
});
以及函数文件中的其他PHP:
add_action( \'wp_ajax_verify_username\', \'check_username\' );
add_action( \'wp_ajax_nopriv_verify_username\', \'check_username\' );
function check_username(){
$username = $_POST[\'username\'];
if( username_exists( $username ) ) {
echo $username . \' already taken.\';
}else {
echo \'Hurray \' . $username . \' is available.\';
}
exit;
}