2014-05-17 4 views
0

내 목표는 페이지를 다시로드하지 않고도 WordPress에 등록 오류를 표시하는 것입니다. 현재 registration_errors에 사용자 지정 함수를 연결하고 있습니다. 내 사용자 정의 함수는 등록 양식에서 오류를 검사하고 오류가 발생하면 오류를 추가합니다. 예를 들면 다음과 같습니다.페이지 리로드없이 WordPress에 등록 오류 표시

function myplugin_check_fields($errors, $sanitized_user_login, $user_email) { 

    $errors->add('demo_error', __('<strong>ERROR</strong>: This is a demo error. Registration halted.','mydomain')); 

    return $errors; 

} 

add_filter('registration_errors', 'myplugin_check_fields', 10, 3); 

사용자 정의 기능으로 추가 한 오류는 등록 페이지가 다시로드 된 후 화면에 표시됩니다. 페이지를 다시로드하지 않고도 등록 오류가 화면에 표시되도록하려면 어떻게합니까?

+0

자바 스크립트로 클라이언트의 양식을 확인하십시오. 또는 어떤 종류의 대답을 찾고 계십니까? – max

+0

문제는 무엇이든 페이지를 다시로드하지 않으려 고합니다. 클라이언트 측 유효성 검사에서 유효성이 검사 된 서버 측 오류나 사용자가 JS를 사용할 수없는 경우에는 어떤 일이 발생합니까? 페이지를 새로 고침하면 – henrywright

+0

이 표시됩니다. 사용자가 JS를 사용하지 않으면 양식을 게시하거나 링크를 클릭 할 때 페이지가 항상 다시로드됩니다. – max

답변

0

codex에 따르면 registration_errors에 연결할 수 있습니다.

registration_errors 필터 후크 사용자 등록에 정의 검증 규칙을 만드는 데 사용된다. 양식이 일 때 제출되지만 사용자 정보가 데이터베이스에 저장되기 전에 실행됩니다.

는 폼 데이터에 validate-only 필드를 추가 제공 : 비록

// this is just a general concept, not working code 
function myplugin_check_fields($errors, $sanitized_user_login, $user_email) { 
    // AJAX check 
    if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
     if isset($_POST['validate-only')) { 
      echo json_encode ($errors); 
      wp_exit(); 
     } 
    } 
} 

add_filter('registration_errors', 'myplugin_check_fields', 10, 3); 

의 I 출력에 "오류 양식을"계속에서 워드 프레스를 중단 알고있는 유일한 방법이기 때문에 위대한하지 wp_exit (어떤 오류가있는 경우 이어야합니다.)은 변장에 exit입니다.

장기적으로 볼 때 미리 게시 할 자체 유효성 검사 스크립트를 작성하는 것이 좋습니다.

+0

감사합니다. 유효성 검사 전용 필드의 목적은 무엇입니까? – henrywright

+0

양식의 유효성 만 확인하려는 것으로 나타냅니다. 기본적으로 사용자 데이터가 데이터베이스에 저장되기 전에 실행을 중지시키는 확실한 기능을 제공합니다. 사용자가 제출 버튼을 클릭 할 때만해야 할 일 (윤리적 및 법적 이유로). – max

+0

하지만 등록 오류가없는 경우에만 양식을 제출하고 싶습니다. – henrywright