WP 오류 객체를 포착 / 수행하는 방법


15

wp_insert_post ()를 포함하여 플러그인 내에서 WP 함수 중 일부를 직접 실행하고 있습니다. 문제가 발생하면 WP Error 객체를 반환합니다.이 오류를 잡는 올바른 방법은 무엇입니까? 내장 된 WP 함수 또는 PHP 예외 또는 기타를 사용합니다.


4
여기 답변에 언급 된 내용을 추가하고 명확히하는 것은 PHP 객체 WP_Error아닙니다Exception . 당신은 try/catch그것에 방법을 사용하지 않습니다 . 그러나 언급했듯이 사용하기 편리한 편의 기능이 있습니다.
Dougal Campbell

답변:


21
  1. 함수의 리턴 값을 변수에 지정하십시오.

  2. 로 변수를 확인하십시오 is_wp_error().

  3. 만약 true핸들 따라서, 예를 들어 trigger_error()에서 메시지 WP_Error->get_error_message()방법.

  4. 경우 false- 평소와 같이 진행합니다.

용법:

function create_custom_post() {
  $postarr = array();
  $post = wp_insert_post($postarr);
  return $post;
}

$result = create_custom_post();

if ( is_wp_error($result) ){
   echo $result->get_error_message();
}

11

헤이,

먼저 날씨를 확인하여 결과가 WP_Error객체인지 여부 를 확인하십시오 .

$id = wp_insert_post(...);
if (is_wp_error($id)) {
    $errors = $id->get_error_messages();
    foreach ($errors as $error) {
        echo $error; //this is just an example and generally not a good idea, you should implement means of processing the errors further down the track and using WP's error/message hooks to display them
    }
}

이것은 일반적인 방법입니다.

그러나 WP_Error 객체는 오류가 발생하지 않고 인스턴스화 될 수 있으며 경우에 대비하여 일반적인 오류 저장소로 작동합니다. 그렇게하려면 다음을 사용하여 오류가 있는지 확인할 수 있습니다 get_error_code().

function my_func() {
    $errors = new WP_Error();
    ... //we do some stuff
    if (....) $errors->add('1', 'My custom error'); //under some condition we store an error
    .... //we do some more stuff
    if (...) $errors->add('5', 'My other custom error'); //under some condition we store another error
    .... //and we do more stuff
    if ($errors->get_error_code()) return $errors; //the following code is vital, so before continuing we need to check if there's been errors...if so, return the error object
    .... // do vital stuff
    return $my_func_result; // return the real result
}

그렇게하면 wp_insert_post()위 예제와 같이 프로세스에서 반환 된 오류를 확인할 수 있습니다 .

클래스는 Codex에 문서화되어 있습니다.
그리고 여기에도 작은 기사가 있습니다 .


감사! 첫 번째 코드 조각은 wp_insert_user에 대한 작업을 수행했습니다.
Mohammad Mursaleen

1
$wp_error = wp_insert_post( $new_post, true); 
                              echo '<pre>';
                              print_r ($wp_error);
                              echo '</pre>';

이것은 wordpress post insert 기능의 문제점을 정확하게 보여줍니다. 그냥 시도 해 봐 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.