How to catch/what to do with a WP Error Object

I am running some of the WP functions directly inside a plugin, including wp_insert_post(), if something goes wrong, this returns a WP Error object, what is the correct method to catch this error? Either using built in WP functions or PHP exceptions or whatnot..

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

  1. Assign return of the function to the variable.
  2. Check the variable with is_wp_error().
  3. If true handle accordingly, for example trigger_error() with message from WP_Error->get_error_message() method.
  4. If false – proceed as usual.

Usage:

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();
}

Method 2

Hei,

first, you check weather your result is a WP_Error object or not:

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

This is the usual way.

But the WP_Error object can be instanciated without any error occuring, just to act as a general error store just in case. If you want to do so, you can check if there are any errors by using 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
}

If you do that, you can then check for an process the returned error just as in the wp_insert_post() example above.

The Class is documented on the Codex.
And there’s also a little article here.

Method 3

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

This will show you exactly what’s wrong with wordpress post insert function. just try it !


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x