Comment intercepter / que faire avec un objet d'erreur WP

13

J'exécute certaines des fonctions WP directement dans un plug-in, y compris wp_insert_post (). Si quelque chose ne va pas, un objet d'erreur WP est renvoyé. Quelle est la méthode correcte pour intercepter cette erreur? Soit en utilisant les fonctions WP intégrées, soit des exceptions PHP ou autre chose ..

    
posée Dunhamzzz 04.03.2011 - 14:58

3 réponses

20
  1. Affectez le retour de la fonction à la variable.

  2. Vérifiez la variable avec is_wp_error() .

  3. Si true traite en conséquence, par exemple, trigger_error() avec le message de la méthode WP_Error->get_error_message() .

  4. Si false - procédez comme d'habitude.

Utilisation:

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();
}
    
réponse donnée Rarst 04.03.2011 - 15:08
11

Hei,

d’abord, vous vérifiez si votre résultat est un objet WP_Error ou non:

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

C’est la méthode habituelle.

Mais l'objet WP_Error peut être instancié sans qu'aucune erreur ne survienne, juste pour agir comme un magasin d'erreurs général au cas où. Si vous voulez le faire, vous pouvez vérifier s'il y a des erreurs en utilisant 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 vous le faites, vous pouvez alors rechercher dans le processus l'erreur renvoyée, comme dans l'exemple de wp_insert_post() ci-dessus.

La classe est documentée dans le Codex .
Et il y a aussi un petit article ici .

    
réponse donnée wyrfel 04.03.2011 - 15:13
1
$wp_error = wp_insert_post( $new_post, true); 
                              echo '<pre>';
                              print_r ($wp_error);
                              echo '</pre>';

Ceci vous montrera exactement ce qui ne va pas avec la fonction post-insertion de wordpress. juste l'essayer!

    
réponse donnée user4772 19.04.2011 - 23:02

Lire d'autres questions sur les étiquettes