How do you display WP_Error() errors on another page?

In functions.php, I've got a form processor using the following code:

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; }

In account.php, which shows the shape, I've the next code:

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

Neither the invalid_email nor the email_exist errors are reported throughout testing. However, errors are avoided. I simply do not understand why they are not displayed. What shall we be held doing wrong?

So simply to understand this obvious, you've account.php(a normal php file), which upon submission describes another php file which executes update_account() after which in account.php you will find the code given above?

More code could be helpful in fixing this, pastebin whether it's too big?

You cannot process $_Publish data in functions.php without passing the information like a parameter to some function, since you are not really posting to functions.php.

I've got a feeling your php error confirming is turned off. Include error_confirming(E_ALL) to make certain.

If account.php isn't a page template, you have to include wordpress_blog_header.php(in the cause of your wordpress installation) to ensure that wordpress really loads and knows what you are mentioning to using the custom functions and wordpress_error and all sorts of.

EDIT: recognized that functions.php will get loaded anyway on every page, sorry.