2011-11-02 49 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

您需要在您的帳戶頁面上放置全局$錯誤。