Verifica se un nome utente esiste con AJAX in WordPress

8 ott 2012, 18:28:40
Visualizzazioni: 5.07K
Voti: 2

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?

0
Tutte le risposte alla domanda 2
2

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...

8 ott 2012 18:34:35
Commenti

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

Jacek Jagiełło Jacek Jagiełło
8 ott 2012 18:40:47

L'altra cosa che dovrai fare è cambiare $.get in $.post per inviare i tuoi dati a WordPress. Ma a parte le modifiche che ho consigliato, non possiamo raccomandare altro senza vedere l'effettivo markup HTML che stai cercando di utilizzare.

EAMann EAMann
8 ott 2012 18:59:29
1

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.

8 ott 2012 18:35:21
Commenti

Ancora non funziona. Non restituisce alcun output.

Jacek Jagiełło Jacek Jagiełło
8 ott 2012 18:43:04