如何捕获/如何处理WP错误对象

时间:2011-03-04 作者:Dunhamzzz

我正在插件中直接运行一些WP函数,包括WP\\u insert\\u post(),如果出现问题,这将返回一个WP Error对象,捕获此错误的正确方法是什么?要么使用内置的WP函数,要么使用PHP异常,等等。。

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

将函数的返回值赋给变量。

用检查变量is_wp_error().

如果true 例如,相应地处理trigger_error() 来自的消息WP_Error->get_error_message() 方法

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

SO网友:wyrfel

嗨,

首先,检查结果是否为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\\u 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() 上述示例。

课程是documented on the Codex.<还有a little article here.

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?