Проверка существования имени пользователя с помощью AJAX
Я создал пользовательскую форму регистрации для установки WordPress Multisite. Она позволяет регистрировать новые блоги и пользователей. Мне нужно проверить через AJAX, доступно ли указанное имя пользователя. Вот что у меня есть на данный момент:
add_action( 'wp_footer', 'pb_ajax_add_js' );
function pb_ajax_add_js() {
// Добавляем скрипт в подвал
wp_enqueue_script( 'pb_ajax',
plugin_dir_url( __FILE__ ).'js/script.js',
array('jquery'), BOJ_ARM_VERSION, true
);
// Получаем протокол текущей страницы
$protocol = isset( $_SERVER["HTTPS"]) ? 'https://' : 'http://';
// Отображаем admin-ajax.php с тем же протоколом, что и текущая страница
$params = array(
'ajaxurl' => admin_url( 'admin-ajax.php', $protocol )
);
wp_localize_script( 'pb_ajax', 'pb_ajax', $params );
}
Обработка запроса на стороне сервера:
// Обработка 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();
}
И jQuery скрипт (примечание: в этой версии проверка происходит после клика по ссылке)
(function($) {
$('.check-username').click(function(){
var link = this;
$(link).html('проверка...');
// 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);
Скрипт не завершен. Он должен проверять, существует ли имя пользователя, и возвращать true или false. Можете ли вы помочь, пожалуйста?

Проблема в вашем jQuery селекторе:
var usr = $("#site-addres-input").attr('value');
Этот код получит значение по умолчанию для input элемента. Обычно оно будет пустым, так как вы не устанавливаете его заранее. Вам нужно использовать:
var usr = $("#site-addres-input").val();
Я также заметил, что вы используете #site-addres-input
, но слово "address" пишется с двумя s в конце. Не уверен, является ли это также причиной проблемы...

Я использую адрес сайта в качестве имени пользователя (новый адрес блога соответствует имени пользователя). Но это ничего не меняет...

Вы можете использовать функцию: username_exists
для проверки существования пользователя.
Пример использования:
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();
}
Пожалуйста, ознакомьтесь с кодексом для правильного использования этой функции, так как вам потребуется подключить файл.
