当前位置: 首页>>网站问题>>正文


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

webfans 网站问题 , , 去评论

问题描述

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

最佳解决方法

  1. 将函数的返回分配给变量。

  2. is_wp_error()检查变量。

  3. 如果true相应处理,例如trigger_error()带有来自WP_Error->get_error_message()方法的消息。

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

次佳解决方法

喜,

首先,你检查天气你的结果是不是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_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

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/1719.html,转载请务必附带本地址声明。