Verifică dacă un nume de utilizator există folosind AJAX
Am creat un formular de înregistrare personalizat pentru o instalație WordPress MultiSite. Acesta permite înregistrarea de bloguri și utilizatori noi. Doresc să verific cu ajax dacă un anumit nume de utilizator este disponibil. Iată ce am realizat până acum:
add_action( 'wp_footer', 'pb_ajax_add_js' );
function pb_ajax_add_js() {
// adaugă scriptul în footer
wp_enqueue_script( 'pb_ajax',
plugin_dir_url( __FILE__ ).'js/script.js',
array('jquery'), BOJ_ARM_VERSION, true
);
// Obține protocolul paginii curente.
$protocol = isset( $_SERVER["HTTPS"]) ? 'https://' : 'http://';
// Afișează admin-ajax.php folosind același protocol ca pagina curentă.
$params = array(
'ajaxurl' => admin_url( 'admin-ajax.php', $protocol )
);
wp_localize_script( 'pb_ajax', 'pb_ajax', $params );
}
Gestionarea cererii pe server:
// Prelucrare cerere Ajax.
add_action('wp_ajax_nopriv_boj_arm_ajax', 'pb_check_username');
add_action('wp_ajax_boj_arm_ajax', 'pb_check_username');
function pb_check_username() {
$username = $_REQUEST['usr'];
echo $username;
die();
}
Și scriptul jQuery (notă: în această versiune, validarea este după click pe link)
(function($) {
$('.check-username').click(function(){
var link = this;
$(link).html('verificare...');
// href="' . get_permalink() . "#more-{$post->ID}"
var usr = $("#site-addres-input").attr('value');
var data = {
action: 'boj_arm_ajax',
usr: usr
};
$.get(boj_arm.ajaxurl, data, function(data){
$(link).after(data).remove();
});
return false;
});
})(jQuery);
Scriptul nu este complet. Trebuie să verifice dacă numele de utilizator există și să returneze true sau false. Puteți să mă ajutați, vă rog?

Problema este cu selectorul tău jQuery:
var usr = $("#site-addres-input").attr('value');
Va obține valoarea implicită a elementului input. De obicei, aceasta va fi goală, deoarece nu o setezi în prealabil. Trebuie să folosești:
var usr = $("#site-addres-input").val();
De asemenea, observ că folosești #site-addres-input
, dar "address" se scrie cu două s-uri la final. Nu sunt sigur dacă și asta îți cauzează probleme sau nu...

Folosesc adresa site-ului ca nume de utilizator (noua adresă de blog este egală cu numele de utilizator). Dar asta nu schimbă nimic...

Puteți folosi această funcție: username_exists
pentru a verifica dacă utilizatorul există.
Astfel:
add_action('wp_ajax_nopriv_boj_arm_ajax', 'pb_check_username');
add_action('wp_ajax_boj_arm_ajax', 'pb_check_username');
function pb_check_username() {
$username = $_REQUEST['usr'];
if(username_exists($username))
echo 1;
else
echo 0;
die();
}
Vă rugăm să citiți codex-ul pentru utilizarea corectă a acestei funcții, deoarece va trebui să includeți un fișier.
