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(); }