(разрешено) Создание пользовательской формы входа с помощью ajax (без плагина)

Я пытаюсь использовать этот учебник WordPress AJAX Login Without the Plugin – Правильный путь от Natko Hasic для создания форм регистрации, регистрации и забытых паролей, которые обрабатывают все, включая сообщения об ошибках с AJAX. Различия между учебником и моим проектом … Я не хочу делать это во всплывающем окне, и я делаю это в плагине, а не в корневой папке темы.

Вот какой код у меня есть …

Код в шаблоне страницы:

<form name="login_form" id="login_form" class="login_form" action="" method="post"> <p class="status"></p> <p> <input type="text" name="username" id="username" placeholder="Username" /> </p> <p> <input type="password" name="password" id="password" placeholder="Password" /> </p> <button name="submit" id="submit" class="btn"><?php _e("Sign in", "shorti"); ?></button> <a class="lost" href="<?php echo wp_lostpassword_url(); ?>">Lost your password?</a> <?php wp_nonce_field( 'ajax-login-nonce', 'security' ); ?> </form> 

Код, запущенный в моем основном плагине .php-файл:

  <?php // The php script I'm trying to run add_action( 'init', 'ajax_login_init' ); function ajax_login_init() { wp_register_script( 'ajax-login-script', plugin_dir_url( __FILE__ ) . 'js/ajax-login-script.js', array('jquery') ); wp_enqueue_script( 'ajax-login-script' ); wp_localize_script( 'ajax-login-script', 'ajax_login_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'redirecturl' => home_url(), 'loadingmessage' => __( 'Sending user info, please wait...' ) )); // Enable the user with no privileges to run ajax_login() in AJAX add_action( 'wp_ajax_nopriv_ajaxlogin', 'ajax_login' ); } // Check if users input information is valid function ajax_login() { // First check the nonce, if it fails the function will break check_ajax_referer( 'ajax-login-nonce', 'security' ); //Nonce is checked, get the POST data and sign user on $info = array(); $info['user_login'] = $_POST['username']; $info['user_password'] = $_POST['password']; $info['remember'] = true; $user_signon = wp_signon( $info, false ); if ( is_wp_error( $user_signon )) { echo json_encode( array( 'loggedin'=>false, 'message'=>__( 'Wrong username or password!' ))); } else { echo json_encode( array( 'loggedin'=>true, 'message'=>__('Login successful, redirecting...' ))); } die(); } 

Мое содержимое файла ajax-login-script.js :

 jQuery(document).ready(function($){ // Perform AJAX login on form submit $('form#login_form').on('#submit', function(e){ $('form#login_form p.status').show().text(ajax_login_object.loadingmessage); $.ajax({ type: 'POST', dataType: 'json', url: ajax_login_object.ajaxurl, data: { 'action': 'ajaxlogin', //calls wp_ajax_nopriv_ajaxlogin 'username': $('form#login_form #username').val(), 'password': $('form#login_form #password').val(), 'security': $('form#login_form #security').val() }, success: function(data){ $('form#login_form p.status').text(data.message); if (data.loggedin == true){ document.location.href = ajax_login_object.redirecturl; } } }); e.preventDefault(); }); }); 

Я не совсем знаком с AJAX или JS, поэтому любой свет, который вы можете пролить на это, очень ценится!

Solutions Collecting From Web of "(разрешено) Создание пользовательской формы входа с помощью ajax (без плагина)"