Cómo atrapar / qué hacer con un objeto de error WP

13

Estoy ejecutando algunas de las funciones de WP directamente dentro de un complemento, incluyendo wp_insert_post (), si algo sale mal, esto devuelve un objeto de error de WP, ¿cuál es el método correcto para detectar este error? Ya sea usando funciones WP integradas o excepciones de PHP o lo que sea ...

    
pregunta Dunhamzzz 04.03.2011 - 14:58

3 respuestas

20
  1. Asigna el retorno de la función a la variable.

  2. Verifique la variable con is_wp_error() .

  3. Si true se maneja en consecuencia, por ejemplo, trigger_error() con un mensaje del método WP_Error->get_error_message() .

  4. Si false : proceda como de costumbre.

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

Hei,

primero, verifica si el resultado es un objeto WP_Error o no:

$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 es la forma habitual.

Pero el objeto WP_Error se puede instanciar sin que se produzca ningún error, solo para actuar como un almacén de error general, por si acaso. Si desea hacerlo, puede verificar si hay algún error utilizando 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
}

Si lo haces, entonces puedes verificar el proceso de error devuelto, como en el ejemplo anterior wp_insert_post() .

La Clase está documentada en el Codex .
Y también hay un pequeño artículo aquí .

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

Esto le mostrará exactamente lo que está mal con la función de inserción de inserción de wordpress. ¡pruébalo!

    
respondido por el user4772 19.04.2011 - 23:02

Lea otras preguntas en las etiquetas