Benutzerdefiniertes HTML-Formular mit PHP – Hilfe mit Ajax / Benutzernamen validation

Ich habe derzeit ein funktionierendes Registrierungsformular, das ich auf meiner Seite erstellt habe. Es ist ein HTML-Formular und ich habe PHP programmiert, damit es den Benutzer in unserer WP_user-Tabelle erstellt und uns eine E-Mail mit Informationen aus dem Formular sendet. Das PHP befindet sich in der Datei functions.php und es gibt keine Probleme damit es funktioniert, aber es muss zur Zeit gesendet werden und wenn der erstellte Benutzername bereits existiert, wird es eine Fehlermeldung auf der leeren Indexseite anzeigen und dann zurück zum Formular redirect. Wir möchten, dass es überprüft und zeigt, ob der Benutzername verfügbar ist oder nicht, während Sie auf dem Formular sind. Ich denke, das muss mit AJAX gemacht werden, aber ich bin mir nicht sicher. Hier ist der PHP-Code von functions.php:

if (username_exists($user)){ echo 'Username already exists. Please wait while we redirect you back to the form'; 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 } } 

Auch dies funktioniert einwandfrei, aber wir möchten eine Option ausprobieren, die im Formular validiert wird, wenn auf das Feld “Benutzername” geklickt wird. Ich bin nicht vertraut mit AJAX zu viel oder wo es für WP zu implementieren, also möchte ich die Best Practices hier verwenden. Vielen Dank

AKTUALISIEREN:

Hier ist ein Code für den AJAX-Anruf, den ich verwende.

 jQuery(document).ready(function(){ jQuery('#username').on('change', function(){ let user = jQuery(this).val(); jQuery.ajax({ type: 'POST', url: '', 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); } }); }); }); 

Sowie zusätzliches PHP in der functionsdatei:

 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; } 

Solutions Collecting From Web of "Benutzerdefiniertes HTML-Formular mit PHP – Hilfe mit Ajax / Benutzernamen validation"

So habe ich AJAX für mich arbeiten lassen.

  1. Ich habe dieses Tutorial verdaut. https://codex.wordpress.org/AJAX_in_Plugins

  2. Ich habe eine externe JS-Datei erstellt und nach jQuery aufgrund der Abhängigkeit von jQuery in die Warteschlange gestellt.

  3. Ich habe eine PHP-function erstellt, um auf den AJAX-Aufruf zu antworten, indem ich das Echo zurückschicke, das gesendet wurde.

  4. Als das funktionierte, ließ ich die PHP-function die Daten senden, die ich brauchte.

Ich denke, was du hast, sollte funktionieren. Wenn die let Deklaration einen Fehler verursacht, versuchen Sie es stattdessen mit var . Das ist dumm, ich weiß, aber wenn var nicht funktioniert, dann ist der Fehler in der rechten Seite des Ausdrucks.

Ich würde url: '' ersetzen url: '' mit ajaxurl und sehen, ob das hilft.