Verificar si el nombre de usuario existe con AJAX en WordPress
He creado un formulario de registro personalizado para una instalación de WordPress Multisitio. Permite el registro de nuevos blogs y usuarios. Quiero verificar con AJAX si un nombre de usuario está disponible. Esto es lo que tengo hasta ahora:
add_action( 'wp_footer', 'pb_ajax_add_js' );
function pb_ajax_add_js() {
// agregar script al footer
wp_enqueue_script( 'pb_ajax',
plugin_dir_url( __FILE__ ).'js/script.js',
array('jquery'), BOJ_ARM_VERSION, true
);
// Obtener protocolo de la página actual
$protocol = isset( $_SERVER["HTTPS"]) ? 'https://' : 'http://';
// Mostrar admin-ajax.php usando el mismo protocolo que la página actual
$params = array(
'ajaxurl' => admin_url( 'admin-ajax.php', $protocol )
);
wp_localize_script( 'pb_ajax', 'pb_ajax', $params );
}
Manejo de la solicitud del lado del servidor:
// Manejo de solicitud 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();
}
Y el script jQuery (nota: en esta versión, la validación ocurre después de hacer clic en el enlace)
(function($) {
$('.check-username').click(function(){
var link = this;
$(link).html('verificando...');
// 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);
El script no está completo. Debe verificar si el nombre de usuario existe y devolver verdadero o falso. ¿Pueden ayudarme por favor?

El problema está con tu selector de jQuery:
var usr = $("#site-addres-input").attr('value');
Obtendrá el valor por defecto del elemento de entrada. Normalmente estará vacío, porque no lo estás estableciendo de antemano. Necesitas usar:
var usr = $("#site-addres-input").val();
También noto que estás usando #site-addres-input
, pero "address" tiene dos 's' al final. No estoy seguro si esto también te está causando un problema o no...

Estoy usando la dirección del sitio como nombre de usuario (la nueva dirección del blog es igual al nombre de usuario). Pero esto no cambia nada...

Puedes usar esta función: username_exists
para verificar si el usuario existe.
Así:
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();
}
Por favor lee el codex para el uso correcto de esta función ya que necesitarás incluir un archivo.
