电话
$error = new WP_Error( $code, $message, $data );
输出说我在代码中添加了三条消息(消息A、消息B、消息C
my_code 在最后一条消息中,我添加了“数据”作为
$data, 全部重写
$data 与以前对错误类的调用一起添加。
WP_Error Object
(
[errors] => Array
(
[my_code] => Array
(
[0] => "msg A"
[1] => "msg B"
[2] => "msg C"
)
)
[error_data] => Array
(
[my_code] => "Data"
)
)
检查后(&A);通过使用wp错误类,我得到了以下问题:
问题
我可以通过无限数量的
$code,然后传递无限数量的
$messages到每个代码。关键是我不能超过一个
$data 每
$code.
Q: 的预期使用情形是什么$data?1)
目前,我正在尝试构建一个非常简单的WP\\U错误包装API(基本上是一组易于使用的函数)。目标是从中生成trac票据,并将其移动到WP core
我在/wp includes/functions中发现了一个非常奇怪的行为。php与wp_die(); 函数:如果提供错误对象,函数会自动填充$data[\'title\']. 所以从这个来看我认为$data 可以是一个关联数组,可以保存任意数量的附加动态数据。
Q: 但是,只有当这是预期用例时,这才有效$data a)是一个数组,b)我成功地在其中添加了其他数据:我如何将其连接到相应的消息?
Q: 进一步:为什么不wp_die(); 如果没有错误,是否中止?这使得将其用作动态(万一)添加的错误输出完全无效。
您可以找到用于修复wp_die() 处理程序here.
可以找到第一个“主题错误API”的草稿here on github. 分叉等,并高度赞赏评论。
SO网友:EarnestoDev
$this->error_data[$code] ... WP\\u Error对象在数组中保存$数据,$code是键。这个add_data 方法明确规定:
错误代码只能包含一个错误数据。但是$data (混合)可以是数组或对象,并根据需要携带任意多个键/属性。这取决于你的处理者如何解释它。
错误$data 是进一步自定义错误处理的奖励。您自己的特殊函数可以抛出WP_Error 您可以将自定义数据添加到$data 这可以由您自己的错误处理程序进行解释。
wp_die(); 与相同die; 仅在执行此操作之前显示格式化输出。预计它将死亡。die; 在PHP中是无条件的。它的目的是停在那里wp_die(); 旨在模拟具有高级死前输出功能的功能。
这个\'title\' 在$data 支持只是一种奖励,允许对WP_Error(). 它的设计使他们不需要选择error_code\'如果存在多条消息,则s消息为标题。它们只使用默认的标题属性。永远不要依赖此类默认功能!在中始终使用您自己的标题wp_die().
这里没有错误,只是有意的行为。。。如果我没弄错你的问题
SO网友:EarnestoDev
/**
* Creates a static global shared WP_Error object.
* The object is contained safely inside function body as static variable.
* It\'s also protected from external influence.
*
* @return WP_Error
*/
function theme_errors(){
static $wp_error; // Will hold global variable safely
return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null, null, null));
}
// This is how you add errors (first call initializes the object).
theme_errors()->add($code = \'code\', $message = \'message\', $data = \'some data\');
theme_errors()->add($code = \'code\', $message = \'message\', $data = \'some data\');
// And then do some display stuff on shutdown
add_action(\'shutdown\', function(){
// If conditions are met and errors exist:
if(!theme_errors()->get_error_codes()) return;
// Loop error codes and display errors
foreach(($codes = theme_errors()->get_error_codes()) as $code){
$message = theme_errors()->get_error_message($code);
$data = theme_errors()->get_error_data($code);
// Display stuff here
}
});
更简单的选择。主题名称独立(我们只处理活动主题)。函数内受保护的全局变量。