2017-03-03 38 views
0

我有一個使用類的自定義插件。在課堂中,我添加一個顯示「設置」窗體的管理儀表板菜單項。讓我們說這個班級看起來是這樣的:在基於類的插件中在WordPress中創建表單

class MyPlugin { 

    function __construct() { ... } 

    function show_menu_form() { 
    $url = admin_url("admin_post 
    echo <<<EOFORM 
     <form method="POST" action="$url"/> 
     Click submit to do stuff. 
     <input type="hidden" name="action" value="do_stuff"/> 
     <input type="submit/> 
     </form> 
EOFORM;   
    add_action('wp_post_do_stuff', [$this, '_handle_stuff']); 
    } 

    function _handle_stuff() { 
    echo "Doing stuff..."; 
    } 
} 

表格在儀表板頁面中正確打印。當我點擊提交時,它會進入一個完全空白的屏幕。我希望它做的是:

  • 做一些
  • 回到同一頁面,顯示像,消息「東西做。」在同一表單上方,用戶可以再次點擊表單提交來做更多的事情。

如果我離開的動作空白的<形式>標籤將回到同一個頁面,我們可以手動處理GET/POST PARAMS自己...這似乎是一個壞的解決方案(但目前爲止我只能看到一個)。

任何提示?

回答

1

您有2種方法可以做到這一點:

  1. 表單提交給同一頁面和呈現形式之前,你檢查的形式已經提交。如果是,則調用一個函數來顯示「已完成的東西」以及任何進一步的步驟。如果不是,則顯示該表單。 通過這種方式,您不需要任何JavaScript插件,我的IMOO會更簡單直接。

  2. 使用AJAX提交並使用javascript顯示確認消息。您可以閱讀文檔AJAX in Plugins以瞭解如何在管理菜單中執行此操作。這可能是更優雅的解決方案,無需刷新任何頁面。

要使用哪一個取決於您的插件的要求。無論哪種方式,不要忘記驗證輸入