如何在其他页面上显示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’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 :(得分: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都会被加载,抱歉。