Update 2.1:
好吧,在把这件事弄得一团糟之后,我记得我没有包括导致白屏的JS文件,哎呀!;)
现在表单既不提交数据也不发送电子邮件。。。还有error handling
仍不工作。
我有一张登记表wp_create_user
功能,以便我可以限制谁注册到我的网站!我现在正尝试将其调整为AJAXify,以实现错误处理和“更平滑”和更轻松的用户体验。
服用后@Andrew Bartel
\'在他的建议下,我下定决心,“至少要努力”朝着正确的方向前进。
这是我的updated
问题:由于某种原因,我不知道,我的页面仍希望在提交表单时刷新。。但当它这样做时,它不会刷新到“同一页”,而是整个屏幕变为白色,没有错误或任何东西。我完全迷路了!
以下是我正在使用的文件/代码。。。
The registration form (custom-uploader.php):
<h1 class="register-header">Register a new user</h1>
<a class="logout" href="<?php echo wp_logout_url( get_permalink() ); ?>">Logout</a>
<div id="form-messages"></div>
<form id="register-form" method="post" action="<?php echo plugins_url( \'register.php\', dirname( __FILE__ )); ?>">
<!-- Username -->
<p>
<input type="text" name="user_name" id="user_name" class="input" placeholder="unique username" required>
</p>
<!-- Email to send p/w to -->
<p>
<input type="email" name="user_email" id="user_email" class="input" placeholder="email address" required>
</p>
<!-- Hidden Nonce "input" -->
<?php wp_nonce_field( \'nonceification\', \'register_nonce\' ); ?>
<p class="small-text">You will receive an email with a generated password<br />(which you can change in your "user settings")</p>
<button type="submit" id="wp-submit" class="btn">Register new user</button>
</form>
Attempted AJAX file (register.js)
jQuery.noConflict();
jQuery(function() {
// Get the form.
var form = jQuery(\'#register-form\');
// Get the messages div
var formMessages = jQuery(\'#form-messages\');
// Set up an event listener for the contact form
jQuery(form).submit(function(event) {
// Stop the browser from submitting the form
event.preventDefault();
// Serialize the form data
var formData = jQuery(form).serialize();
jQuery.ajax({
type: \'POST\',
url: jQuery(form).attr(\'action\'),
data: formData
}).done(function(response) {
// Make sure that the form Messages div has the \'success\' class
jQuery(formMessages).removeClass(\'register-error\');
jQuery(formMessages).addClass(\'register-success\');
// Set the message text
jQuery(formMessages).text(response);
// Clear form
jQuery(\'#user_name\').val(\'\');
jQuery(\'#user_email\').val(\'\');
}).fail(function(data) {
// Make sure that the formMessages div has the \'error\' class
jQuery(formMessages).removeClass(\'register-success\');
jQuery(formMessages).addClass(\'register-error\');
// Set the message text
if(data.responseText !== \'\') {
jQuery(formMessages).text(data.responseText);
}else{
jQuery(formMessages).text(\'Oops! An error occurred and your request was not sent.\');
}
});
});
});
The actual registration process (register.php)
<?php
require_once( \'/home5/desigoe6/public_html/demo/dominion-skills/wp-load.php\' );
$username = $_POST[\'user_name\'];
$email = $_POST[\'user_email\'];
// Verify nonce field
$nonce = $_POST[\'register_nonce\'];
if ( !wp_verify_nonce( $nonce, \'register_nonce\' )) {
die();
}
// Sanitize user input data
$username = sanitize_user( $username, $strict = true );
$email = santize_email( $email );
// Validate email format
$email_val = filter_var( $email, FILTER_VALIDATE_EMAIL );
// Check if user\'s chosen name/email already exists
$user_id = username_exists( $username );
$user_email = email_exists( $email );
// Parse data, if \'good\' execute
if ( $user_id && $user_email ) {
http_response_code(400);
echo "Oops! There appears to be an account already with that name and/or email.";
exit;
} elseif ( !$email_val ) {
http_response_code(400);
echo "Please enter a valid email and retry!";
exit;
} else {
// Generate the password and create the user
$password = wp_generate_password( 12, false );
$user_id = wp_create_user( $username, $password, $email );
// Update user
wp_update_user( array( \'ID\' => $user_id ));
// Set user role
$user = new WP_User( $user_id );
$user->set_role( \'subscriber\' );
// Email user their password
$mail = wp_mail( $email, \'Your new password!\', \'Here\\\'s your new password: \' . $password );
if ( $mail ) {
http_response_code(200);
echo "Success! Check your email for your password! Logout and use your new username & password.";
} else {
http_response_code(500);
echo "Um, it looks like there was any error and we failed to receive your request ... if this problem persists please let us know!";
}
}?>
还有,如果你看到
other
缺陷或“不良做法”正在使用中,请让我知道。。。我还在想这东西是怎么工作的。
谢谢