WordPress:如何在另一个页面上显示WP_Error()错误?

时间:2011-11-02 07:59:36

标签: php wordpress error-handling

如何在其他页面上显示WP_Error()错误?

functions.php中,我有一个带有以下代码的表单处理器:

global $current_user, $errors; get_currentuserinfo();

$errors = new WP_Error();

if( isset( $_POST['user_email']) ) {
    if( !is_email( $_POST['user_email'] ) ) {
        $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
    } elseif( email_exists( $_POST['user_email'] ) ) {
        $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
    } elseif( $_POST['user_email'] <> $current_user->{user_email} ) {
        wp_update_user( array( 'ID' => $uid, 'user_email' => esc_attr( $_POST['user_email'] ) ) );
    }       
}
if($errors->get_error_code()) { return $errors; }

在显示表单的account.php中,我有以下代码:

<?php
    $return = update_account();
    if(is_wp_error($return)) { echo $return->get_error_message(); }
?>

测试期间未报告invalid_emailemail_exist错误。但是, 错误被阻止了。我只是不明白为什么他们没有被展示。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要在帐户页面上添加全局$错误。

答案 1 :(得分:-1)

所以只是为了清楚这一点,你有account.php(一个常规的php文件),在提交时引用一些其他执行update_account()的php文件然后返回到account.php你有上面给出的代码吗?

更多的代码在解决这个问题时会有用吗,如果它太大了,那么它就是什么?

你不能在不将数据作为参数传递给函数的情况下处理functions.php中的$ _POST数据,因为你实际上没有发布到functions.php。

我感觉你的php错误报告已关闭。添加error_reporting(E_ALL);确保。

如果account.php不是页面模板,则需要包含wp_blog_header.php(来自wp安装的根目录),以便wordpress实际加载并知道你所引用的自定义函数和wp_error以及所有

编辑:意识到每个页面上的functions.php都会被加载,抱歉。