标签归档:WordPress 错误处理

WordPress 错误处理:WP_Error 类

在 WordPress 的运行中难免会产生一些错误,我们不希望错误直接阻止了用户对网站的顺畅访问。

这里指的错误并不是 PHP 代码错误。而是在处理一些数据的时候产生的,尤其是处理表单数据,因为不可能所有用户都会完全按照我们的要求提交数据。

比如,在注册用户的时候需要用户填写电子邮件。用户可能会输入不符合电子邮件格式的内容,或者这个电子邮件已经有用户使用,那么就会产生一个错误,导致用户无法顺利注册。

由于错误多种多样,WordPress 使用了一个 WP_Error 类来统一错误的保存方式,有了统一的方式,插件和主题就能更好的读取和添加一些错误,也能简化错误的储存代码。

属性

$errors

用于储存所有的错误。

$error_data

储存错误的额外数据。

这些属性均为类私有(private)。

方法

get_error_codes()

获取所有错误代码。

get_error_code()

获取第一个可用的错误代码,如果没有则返回空。

get_error_messages( $code = ” )

获取一个错误的所有错误消息。

get_error_message( $code = ” )

获取一个错误的第一个错误消息。

get_error_data( $code = ” )

获取错误的额外数据,没有额外数据返回 null.

add( $code, $message, $data = ” )

添加一个错误信息。

add_data( $data, $code = ” )

添加错误的额外数据。

WP_Error( $code = ”, $message = ”, $data = ” ), __construct( $code = ”, $message = ”, $data = ” )

WP_Error 的构造函数,实例化类的时候自动运行,所有的参数都是可选的。可以直接在实例化类的时候添加一个错误。

使用方法

function Bing_send_mail( $email ){
    if( empty( $email ) ) return new WP_Error( 'empty_email', '邮箱不能为空' );
    if( !is_email( $email ) ) return new WP_Error( 'invalid_email', '邮箱格式不正确' );
    
    if( wp_mail( $email, '测试邮件', 'Hello World' ) ) return true;
 
    return new WP_Error( 'send_error', '邮件发送失败' );
}

下方是一个注册表单的处理函数,里边多次使用了 WP_Error: