Verifica se un nome utente esiste con AJAX in WordPress
Ho creato un form di registrazione personalizzato per un'installazione WordPress Multisite. Permette la registrazione di nuovi blog e utenti. Voglio verificare con AJAX se un dato nome utente è disponibile. Ecco cosa ho fatto finora:
add_action( 'wp_footer', 'pb_ajax_add_js' );
function pb_ajax_add_js() {
// aggiunge lo script al footer
wp_enqueue_script( 'pb_ajax',
plugin_dir_url( __FILE__ ).'js/script.js',
array('jquery'), BOJ_ARM_VERSION, true
);
// Ottieni il protocollo della pagina corrente
$protocol = isset( $_SERVER["HTTPS"]) ? 'https://' : 'http://';
// Mostra admin-ajax.php usando lo stesso protocollo della pagina corrente
$params = array(
'ajaxurl' => admin_url( 'admin-ajax.php', $protocol )
);
wp_localize_script( 'pb_ajax', 'pb_ajax', $params );
}
Gestione della richiesta lato server:
// Gestione richiesta 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();
}
E lo script jQuery (nota: in questa versione, la validazione avviene dopo il click sul link)
(function($) {
$('.check-username').click(function(){
var link = this;
$(link).html('verifica in corso...');
// 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);
Lo script non è completo. Deve verificare se l'username esiste e restituire vero o falso. Potete aiutarmi per favore?

Il problema è con il tuo selettore jQuery:
var usr = $("#site-addres-input").attr('value');
Ottieni il valore predefinito dell'elemento input. Tipicamente sarà vuoto, perché non lo stai impostando in anticipo. Devi utilizzare:
var usr = $("#site-addres-input").val();
Sto anche notando che stai usando #site-addres-input
, ma "address" ha due 's' alla fine. Non sono sicuro se anche questo ti stia causando un problema o meno...

Sto utilizzando l'indirizzo del sito come nome utente (il nuovo indirizzo del blog è uguale al nome utente). Ma questo non cambia nulla...

Puoi usare questa funzione: username_exists
per verificare se l'utente esiste.
In questo modo:
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();
}
Per favore leggi il codex per l'utilizzo corretto di questa funzione poiché sarà necessario includere un file.
