2017-03-23 1 views
0

나는 사용자 정의 HTML 등록 양식을 작성한 WordPress 사이트가 있습니다. 나는 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

사용자 이름이 이미 사용 중이거나 사용 가능하다는 것을 사용자에게 표시하려면 해당 사용자 이름으로 ajax 호출을해야합니다. 사용자가 입력하는 사용자 이름입니다.

  1. 등록 양식에 사용자 이름을 입력하는 데 사용되는 텍스트 필드가 변경되면 감지합니다.
  2. 입력 된 사용자 이름을 사용할 수 있는지 확인하라는 ajax 요청을 보냅니다.
  3. 아약스 호출의 응답을 확인하십시오.
  4. 사용자 이름을 사용할 수 있는지 여부를 사용자에게 표시합니다.

장소

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; 
} 

가 AJAX 호출이 verify_username로 설정 action 매개 변수를 사용하여 만든 경우 확인 후크를 추가 할 add_action('wp_ajax_verify_username', 'check_username')가, 그렇다면 그것을 처리 할 것

테마의 functions.php이 코드 functions.php에있는 check_username 함수에 의해 작성되었습니다. 사용자 이름이 이미 WP username_exists() 기능을 사용하고있는 Ajax 호출에 대한 적절한 응답을 출력하는 경우

check_username 함수는 AJAX 호출과 수표 전송 username 변수의 값을 체크한다.

아약스 호출

다음 코드를 사용하여 만들 수 있습니다 :

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); 
      } 
     }); 
    }); 
}); 

이 당신의 웹 사이트 관리자 - ajax.php URL을하는 데 도움이

희망으로 <WP_AJAX_URL_HERE>를 교체합니다. 더 자세한 설명이 필요하면 알려주세요. :)

+0

고마워요, 제가 이것을 시도하고 알려 드리겠습니다! 많이 고맙습니다 –

+0

죄송합니다. 내가 가지고있는 유일한 혼란은 WP-AJAX_URL 라인입니다, 어디에서 WordPress 사이트의 URL을 찾을 수 있습니까? –

+0

http://wordpress.stackexchange.com/questions/190297/ajaxurl-not-defined-on-front-end/190299 도움이 될 수도 있습니다. –

관련 문제