2011-11-02 158 views
1

如何在另一页上显示WP_Error()错误?WordPress:如何在另一页上显示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_email也不在测试过程中报告了email_exist错误。但是,错误阻止。我只是不明白他们为什么没有被展示。我究竟做错了什么?

+0

您是否在account.php中包含了wp_blog_header.php? – Jerry

+0

@Jerry包括wp-blog-header.php既不帮助也不阻碍。 – fireundubh

+0

好的,account.php的确切位置在哪里?你能否发布更完整的代码版本? – Jerry

回答

-1

所以为了清楚这一点,你有account.php(一个普通的php文件),它提交后引用一些其他的PHP文件执行update_account(),然后回到account.php你有上面给出的代码?

更多的代码会对解决这个问题很有用,如果它太大,pastebin会有用吗?

如果不将函数中的数据作为参数传递给函数,那么您无法在函数中处理$ _POST数据,因为您实际上并未发布到functions.php。

我有一种感觉,你的PHP错误报告被关闭。加入error_reporting(E_ALL);确保;确定。

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

编辑:意识到functions.php无论如何得到加载在每一页上,对不起。

+0

'account.php'是一个页面模板。 'update_account()'成功处理其他字段。 “error_reporting”已打开。 以下是新的update_account()函数: [link](http://pastebin.com/FDihxxZ1)。 除了在另一页上显示错误,一切正常。我认为我不知道如何检索错误。 WP_Error()函数的文档没有帮助。 – fireundubh

+0

好吧,因为有第三个“处理”页面,当表单被发布时调用,并且您只将用户重定向到account.php模板页面_without_post数据,account.php上的update_account()没有数据来处理,是吗?您可以尝试从处理页面抓取错误,并在从处理页面重定向时将它们作为GET数据发送到URL中? – Jerry

+0

这是一个可行的解决方案,但为什么我不能将错误存储在变量中,在另一页上检索错误,然后取消设置该变量?我认为这就是WP_Error()应该帮助完成的事情。编辑:我想我也可以在用户元数据表中存储错误,从那里检索错误,并清除条目,但这会对性能产生不必要的影响。 – fireundubh

0

您需要在您的帐户页面上放置全局$错误。

相关问题