问题描述
我正在一个插件中直接运行一些 WP 函数,其中包括 wp_insert_post(),如果出现问题,则返回一个 WP Error 对象,该错误的正确方法是什么?使用内置的 WP 函数或 PHP 异常或 whatnot ..
最佳解决方案
-
将函数返回给变量。
-
用
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();
}
次佳解决方案
喜,
首先,您检查天气,您的结果是否为 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 。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。