2011-02-28 80 views
5

在wordpress中擁有自己的自定義表單。wordpress表單動作提交

action=<?php bloginfo('template_url'); ?>/send_form.php" 

上提交,它會始終send_form.php 但這PHP是用於發送信息 - 我不能風格與主題....

有沒有辦法留在當它發送信息並打印出當前頁面並在表單已發送成功的字段中消息成功時?

有人對我有一些建議嗎?

回答

9

這個問題的答案是相當複雜和獲得它的權利需要一點點的關心,但這裏有一個方法的要點:

  1. 動作必須設置爲加載當前頁面,你可以做通過將<form>標記中的action屬性更改爲:action=""
  2. 在此頁面的模板文件中,檢測頁面在提交表單後加載的時間。您可以通過檢查$_POST variable的狀態來執行此操作。
  3. 如果有post變量,在模板文件中處理表單提交。你需要看看「send_form.php」中發生了什麼,找出該做什麼。注意不要引入安全問題(例如,確保使用NONCE)。
  4. 重定向回同一頁面以擺脫帖子變量。如果你不這樣做,人們會得到那些「你想重新提交表單」的警告信息。請參閱PHP header() function進行重定向,並注意這必須在任何輸出發送到頁面之前發生。
  5. 使用server sessions顯示「表單提交成功」。在重定向之前爲消息設置會話變量,然後在頁面加載時顯示它並將其刪除,並將其刪除,以便在下次加載頁面時不顯示消息。

這應該給你一個出發點。

如果其他人有一個更簡單的解決方案,我也很想聽到它。

+0

感謝您的幫助!我發現ajax是解決這個問題的方法。 所以要在這個上試試ajax。 – Cam 2011-03-01 13:29:42

+2

這是真的,我應該提到它。需要考慮的一件事是,未啓用Javascript的瀏覽器將不支持AJAX方法,因此您需要在發生這種情況時考慮回退經驗。這是一小部分用戶,並且越來越小,因此根據您的流量,這可能不是問題。 – Greg 2011-03-01 16:29:06

+1

是的,這是真的。 %非常小,因爲90%以上的網站使用jquery/scriptacluous等。所以不認爲會影響那麼多 – Cam 2011-03-01 16:33:54