Я использовал simple_php_captcha a captcha в настраиваемую форму входа для WordPress в моем веб-сайте и все в порядке. но теперь я хочу создать пользовательскую форму входа в систему с jQuery и AJAX. все в порядке, но мне нужно, чтобы капча была обновлена sh после нажатия кнопки отправки при использовании AJAX. . Итак, теперь мой вопрос: как использовать капчу в форме входа AJAX, чтобы она обновлялась после нажатия на кнопку отправки, и как проверить код капчи с помощью AJAX ??? . Конечно, я нашел следующий вопрос, но не мог этого понять: https://github.com/yasirmturk/simple-php-captcha/issues/14.
Заранее спасибо всем за помощь.
мой код на странице шаблона:
<div id="sh-ajax-login-wrapper" class="sh-ajax-login-wrapper">
<div class="ajax-login-message error" style="display: none;"></div>
<form action="<?php echo get_permalink(); ?>" name="sh-ajax-login-form" id="sh-ajax-login-form" method="post">
<input type="text" name="usernameloginajax" id="usernameloginajax" placeholder:"email/username" required>
<input type="password" name="passwordloginajax" id="passwordloginajax" placeholder="password" required>
<input type="checkbox" name="rememberme" id="rememberme">
<label for="rememberme">remember me</label>
<input type="submit" id="sh-ajax-login-submit" value="login">
<?php wp_nonce_field('ajax-login-form-nonce','security'); ?>
</form>
</div>
.
мой код для AJAX:
jQuery(document).ready(function ($) {
$('#sh-ajax-login-form').on('submit',function(event){
event.preventDefault();
var $this = $(this);
var $username = $this.find('#usernameloginajax').val();
var $password = $this.find('#passwordloginajax').val();
var $security = $this.find('#security').val();
var $remember = $this.find('#rememberme').prop('checked');
var $message = $('.ajax-login-message');
$message.slideUp(300);
if( $username === "" || $password === "" ){
$message.html('<p>fill them all</p>').slideDown(300);
return false;
}
$.ajax({
url:data.ajax_url,
type:'post',
dataType:'json',
data : {
action:'sh_ajax_login_form',
username: $username,
password: $password,
remember: $remember,
security: $security
},
success:function(response){
if( response.error ){
$message.html('<p>'+response.message+'</p>').slideDown(300);
}
if( response.success ){
$message.removeClass('error').addClass('success').html('<p>'+response.message+'</p>').slideDown(300);
//window.location.href = 'http://7learn.dev/profile';
//window.location.href = data.redirecturlajax;
}
},
error: function () {}
});
});
});
.
мой код в функциях. php:
<?php
add_action('wp_ajax_nopriv_sh_ajax_login_form','sh_ajax_login_form');
function sh_ajax_login_form(){
check_ajax_referer('ajax-login-form-nonce','security',true);
$username = sanitize_text_field($_POST['username']);
$password = sanitize_text_field($_POST['password']);
$rememberme = isset($_POST['rememberme']);
if( empty($username) || empty($password) ){
$result = array(
'error' => true,
'message' => 'fill them all'
);
wp_send_json($result);
}
$creds = array(
'user_login' => $username,
'user_password' => $password,
'rememember' => $rememberme
);
$login_user = wp_signon($creds,false);
if( is_wp_error($login_user)){
$result = array(
'error' => true,
'message' => 'Incorrect email/username or password'
);
wp_send_json($result);
}
$result = array(
'success' => true,
'message' => 'you logged in'
);
wp_send_json($result);
}