WP笔记

WordPress Class WP_Error的使用

WordPress Class WP_Error为WordPress提供了错误管理功能,例如判断用户登陆信息时,发现用户名为空、用户密码为空,将这些错误信息存储到一个WP_Error object变量里,然后回传该变量,方便后续处理。本文介绍WP_Error的使用方法。

WordPress Class WP_Error使用方法

创建一个WP_Error object需要 error code(错误代码),error message(错误信息)和error data(错误数据)。

错误信息是错误代码的文字描述,可有可无;错误数据可以拿来存一些调试信息,同样可有可无。举个例子:

new WP_Error( 'copy_failed_for_update_core_file', 
__( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ),
 'wp-admin/includes/update-core.php' );

这段话的意思是:

  • 发生了错误,代码(error code)是copy_failed_for_update_core_file
  • 错误具体描述(error message)是The update cannot be installed …… file permissions,由于文件权限问题导致升级时无法拷贝文件
  • 发生错误的文件(error data)是wp-admin/includes/update-core.php

初始化一个WP_Error object

语法:

new WP_Error( string|int $code = '', string $message = '', mixed $data = '' )

初始化一个变量为WP_Error object,并存储一些错误信息

$error = new WP_Error( 'error_code', 'error message', 'error data' );

方法: add( string|int $code, string $message, mixed $data = ” )

添加错误信息,例如:

$errors = new WP_Error();
$errors->add( 'user_login', 'ERROR: Please enter a username.','includes/user.php' );
$errors->add( 'nickname', 'ERROR: Please enter a nickname.', 'includes/user.php' );

执行后$errors存储的数据如下所示:

WP_Error Object
(
    [errors] => Array
        (
            [user_login] => Array
                (
                    [0] => ERROR: Please enter a username.
                )

            [nickname] => Array
                (
                    [0] => ERROR: Please enter a nickname.
                )

        )

    [error_data] => Array
        (
            [user_login] => includes/user.php
            [nickname] => includes/user.php
        )

)

方法: add_data( mixed $data, string|int $code = ” )

给$code指定的错误代码添加错误数据,每个错误代码只能有一条错误数据

$errors->add_data( 'my error data', 'nickname' );

执行后对应nickename的错误数据会被覆盖。

方法: remove( string|int $code )

移除一条错误记录(对应的code,message和data都被移除)

$errors->remove( 'nickname' );

方法: get_error_code()
方法:get_error_codes()

获取第一条\所有错误代码

$error_codes = $errors->get_error_codes();

得到:

Array
(
    [0] => user_login
    [1] => nickname
)

方法: get_error_message( string|int $code = ” )
方法: get_error_messages( string|int $code = ” )

获取第一条\所有错误信息

$error_messages = $errors->get_error_messages('nickname');

不指定参数就返回所有错误信息。执行上面的代码时,若nickname对应多条错误信息,则以数组形式返回。只有一条错误信息就以字符串形式返回。

方法:get_error_data( string|int $code = ” )

获取$code指定的错误数据,传递空参数就返回第一条错误数据

$error_data = $errors->get_error_data( 'nickname' );

要判断变量是否为WP_Error object,请用is_wp_error()函数,下面是官方文档中给出的WP_Error使用例子

function doer_of_stuff() {
    return new WP_Error( 'broke', __( "I've fallen and can't get up", "my_textdomain" ) );
}

$return = doer_of_stuff();
if( is_wp_error( $return ) ) {
    echo $return->get_error_message();
}