WordPress MultiSiteインストール用のカスタム登録フォームを作成しました。新しいブログやユーザーを登録することができます。与えられたユーザー名が利用可能かどうか私はajaxで確認したいです。これは私がこれまでに持っているものです:
add_action( 'wp_footer', 'pb_ajax_add_js' );
function pb_ajax_add_js() {
// add script to the footer
wp_enqueue_script( 'pb_ajax',
plugin_dir_url( __FILE__ ).'js/script.js',
array('jquery'), BOJ_ARM_VERSION, true
);
//Get protocol of the current page.
$protocol = isset( $_SERVER["HTTPS"]) ? 'https://' : 'http://';
// Display the admin-ajax.php using the same protocol as the current page.
$params = array(
'ajaxurl' => admin_url( 'admin-ajax.php', $protocol )
);
wp_localize_script( 'pb_ajax', 'pb_ajax', $params );
}
サーバー側の要求処理
// Ajax request handling.
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('sprawdzanie...');
// 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');
入力要素のデフォルト値を取得します。あなたはそれを前もって設定していないので、通常これは空白になります。あなたが使用する必要があります:
var usr = $("#site-addres-input").val();
私はあなたが#site-addres-input
を使っていることにも気づいていますが、 "address"は最後に2つあります。これも問題を引き起こしているかどうかわからない...
この関数を使うことができます: 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();
}
ファイルをインクルードする必要があるので、この関数の正しい使い方についてはコーデックスを読んでください。