Como capturar / o que fazer com um objeto de erro do WP

13

Estou executando algumas das funções do WP diretamente dentro de um plugin, incluindo wp_insert_post (), se algo der errado, isso retorna um objeto WP Error, qual é o método correto para capturar este erro? Ou usando funções WP embutidas ou exceções do PHP ou qualquer outra coisa ..

    
por Dunhamzzz 04.03.2011 / 14:58

3 respostas

20
  1. Atribua o retorno da função à variável.

  2. Verifique a variável com is_wp_error() .

  3. Se true manipular adequadamente, por exemplo, trigger_error() com a mensagem do método WP_Error->get_error_message() .

  4. Se false - proceda como de costume.

Uso:

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();
}
    
por Rarst 04.03.2011 / 15:08
11

Hei,

primeiro, você verifica o tempo em que seu resultado é um objeto WP_Error ou não:

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

Esta é a maneira usual.

Mas o objeto WP_Error pode ser instanciado sem que ocorra qualquer erro, apenas para agir como um armazenamento de erro geral apenas no caso. Se você quiser fazer isso, verifique se há algum erro usando 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
}

Se você fizer isso, poderá verificar um erro retornado no processo, assim como no exemplo wp_insert_post() acima.

A classe é documentada no Codex .
E há também um pequeno artigo aqui .

    
por wyrfel 04.03.2011 / 15:13
1
$wp_error = wp_insert_post( $new_post, true); 
                              echo '<pre>';
                              print_r ($wp_error);
                              echo '</pre>';

Isso mostrará exatamente o que há de errado com a função de inserção de postagens do wordpress. apenas tente!

    
por user4772 19.04.2011 / 23:02