2017-03-23 6 views
0

私はカスタムHTML登録フォームを作成したワードプレスサイトを持っています。私は、WPユーザーテーブルにユーザーを作成し、フォームの情報を電子メールで送信する関数ファイルでPHPを使用しています。すべてうまくいきますが、ユーザー名が取得された場合、顧客を表示する新しい方法が必要です。現在作業中ですが、存在するtestUserというユーザー名でテストしています。登録を試みてsubmitを押すと、既に存在することを示すインデックスページに移動し、顧客をフォームに戻して修正します私はAJAXコールの初心者ですが、私はトラブルを抱えていました。別の方法があると思っています。これは現在の作業のスニペットですコード:Wordpress/PHP - 選択したユーザー名を取得したユーザーを表示するためのオプション

if (username_exists($user)){ 

echo 'Username already exists. Please wait while we redirect you back to the form'; 
    die("<meta http-equiv=\"refresh\" content=\"5;url=".$_SERVER['HTTP_REFERER']."\"/>"); 


} 

if (!username_exists($user) && !email_exists($email)) { 
    $user_id = wp_create_user($user, $pass, $email); 
    if(!is_wp_error($user_id)) { 
     //user has been created 
     $user = new WP_User($user_id); 
     $user->set_role('subscriber'); 

     wp_mail($to, $email_subject, $message, $headers); 


     //Redirect 
     wp_redirect('http://www.dev.smithhonig.com/thank-you'); 
     exit; 
    } else { 
     //$user_id is a WP_Error object. Manage the error 
    } 
} 


} 
add_action('init','create_account'); 

答えて

1

ユーザー名がすでに使用されているか使用可能であることをユーザーに示すには、desirとajax呼び出しを行う必要がありますあなたが入力しているユーザ名を入力してください。

  1. ユーザ登録フォームにユーザ名を入力する際に​​変更があった場合に検出します。
  2. 入力されたユーザー名が利用可能かどうかを確認するリクエストをajaxに送信します。
  3. ajax呼び出しの応答を確認します。
  4. ユーザー名が利用可能かどうかをユーザーに表示します。

置き、このコードadd_action('wp_ajax_verify_username', 'check_username')は、AJAX呼び出しがverify_usernameとして設定actionパラメータで作られているかどうかを確認するフックを追加しますあなたのテーマのfunctions.php

add_action('wp_ajax_verify_username', 'check_username'); 
add_action('wp_ajax_nopriv_verify_username', 'check_username'); 
function check_username(){ 
    $username = $_POST['username']; 
    if(username_exists($username)) { 
     echo $username . ' already taken.'; 
    }else { 
     echo 'Hurray ' . $username . ' is available.'; 
    } 

    exit; 
} 

で、もしそうなら、それは取り扱われますあなたのfunctions.phpの関数check_usernameによって、私たちはそのフックの下に書いています。

check_username関数は、ユーザ名が既にWP機能username_exists()を使用して存在し、その後、AJAX呼び出しのための適切な応答を印刷する場合はAJAX呼び出しをチェックして送信username変数の値をチェックします。 AJAX呼び出しは、次のコードを使用して

を行うことができます。

jQuery(document).ready(function(){ 
    jQuery('#username').on('change', function(){ 
     let user = jQuery(this).val(); 
     jQuery.ajax({ 
      type: 'POST', 
      url: '<WP_AJAX_URL_HERE>', 
      data: {action: 'verify_username', username: user}, 
      success: function(data){ 
       console.log(data); 
       // Write code to show the message to user here 
      }, 
      error: function(err){ 
       console.log(err); 
      } 
     }); 
    }); 
}); 

<WP_AJAX_URL_HERE>あなたのウェブサイトと管理者-ajax.php URLを交換し

お役に立てば幸いです。あなたにもっと説明が必要なのかどうか教えてください。 :)

+0

ありがとう、私はこれを試し、あなたに知らせる!よろしくお願いします。 –

+0

申し訳ありませんが、唯一の混乱はWP-AJAX_URL行です.WordpressサイトのURLはどこですか? –

+0

http://wordpress.stackexchange.com/questions/190297/ajaxurl-not-defined-on-front-end/190299これは役に立ちます –

関連する問題