致力于打造一个优秀的建站资源共享学习平台!

爱站窝四川

WordPress 错误处理:WP_Error 类

爱站窝查看全部>>

人气369

在 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 的构造函数,实例化类的时候自动运行,所有的参数都是可选的。可以直接在实例化类的时候添加一个错误。

使用方法

比如下边这个邮件发送函数,如果发生错误,就会把错误返回出去。任何错误都没产生,而且邮件发送顺利则返回 True.

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:

function Bing_register_user(){  $sanitized_user_login = sanitize_user( $_POST['username'] );  $user_email = apply_filters( 'user_registration_email', $_POST['email'] );  $register_errors = new WP_Error;   //验证用户名  if( empty( $sanitized_user_login ) ) $register_errors->add( 'empty_username', __( '用户名不能为空', 'Bing' ) );  elseif( !validate_username( $sanitized_user_login ) ) $register_errors->add( 'invalid_username', __( '用户名包含无效字符', 'Bing' ) );  elseif( username_exists( $sanitized_user_login ) ) $register_errors->add( 'username_exists', __( '用户名已经存在', 'Bing' ) );   //验证邮箱  if( empty( $user_email ) ) $register_errors->add( 'empty_email', __( '邮箱不能为空', 'Bing' ) );  elseif( !is_email( $user_email ) ) $register_errors->add( 'invalid_email', __( '邮箱格式不正确', 'Bing' ) );  elseif( email_exists( $user_email ) ) $register_errors->add( 'email_exists', __( '邮箱已经存在', 'Bing' ) );   //注册表单提交事件  do_action( 'register_post', $sanitized_user_login, $user_email, $register_errors );   //错误过滤器  $register_errors = apply_filters( 'registration_errors', $register_errors, $sanitized_user_login, $user_email );   //注册用户  if( !$register_errors->get_error_message() ){   $register_new_user = register_new_user( $sanitized_user_login, $user_email );   if( is_wp_error( $register_new_user ) ) return $register_new_user;   return true;  }   return $register_errors; }

判断 WP_Error

在很多时候我们要判断函数返回的到底是 WP_Error 还是其它内容,因为 WP_Error 是一个类,所以无法通过 True 或 False 直接判断。

WordPress 提供了一个 is_wp_error() 函数,用它我们就能判断变量是否是 WP_Error:

$register = Bing_register_user(); if( is_wp_error( $register ) ) wp_die( '注册失败:' . $register->get_error_message() );

其它

此类位于:wp-includes/class-wp-error.php

TA的作品
  • Mohtml 作品/设计展示自适应wordpress主题 模板兔出品
  • QYKCMS后台软件v4.1.3部分操作界面截图
  • 轻松制作一款与众不同的QYKCMS网站主题
  • 怎样设置可以让QYKCMS系统运行得更快?
  • 使用 Apache .htaccess 文件设置QYKCMS伪静态规则的方法
  • QYKCMS后台管理软件入门级操作视频教程
  • IIS下使用 web.config 文件设置QYKCMS伪静态规则的方法
  • 同一个网站空间使用QYKCMS建立多个独立站点
  • QYKCMS后台管理员密码忘记了怎么办
  • QYKCMS 网站系统4.0 标签大全
查看全部

全部评论: 0

在线咨询
有什么可以帮到你
点击咨询

账号登录

忘记密码

第三方账号快速登录

Q Q 登 录 微 博 登 录

账号注册 已经有账号? 立即登录

发送验证码

第三方账号快速注册

Q Q 登 录 微 博 登 录