如何使用WP_ERROR$DATA参数?

时间:2011-10-28 作者:kaiser

电话

$error = new WP_Error( $code, $message, $data );
输出说我在代码中添加了三条消息(消息A、消息B、消息Cmy_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. 分叉等,并高度赞赏评论。

2 个回复
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
    }
});
更简单的选择。主题名称独立(我们只处理活动主题)。函数内受保护的全局变量。

结束

相关推荐

使用API为设置标题添加标签

如果我使用添加设置add_settings_field(), 它不会创建<label> 围绕标题,以便单击以聚焦字段。一些核心设置可以做到这一点,但它们只是将其添加到原始HTML中,而不是使用设置API。有没有办法用设置API添加标签?