2017-03-03 2 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. をフォームが同じページに、フォームが既に提出したかどうかをチェックフォームをレンダリングする前に提出します。はいの場合は、 "Stuff was done"とそれ以上のステップを表示する関数を呼び出します。そうでない場合は、フォームを表示します。 このようにして、プラグインにjavascriptは必要なくなり、より簡単で簡単になります。

    2. AJAXを送信し、javascriptを使用して確認メッセージを表示してください。あなたはこれを行う方法を参照するには、AJAX in Plugins文書を読むことができます。これはページリフレッシュを必要とせずにより洗練されたソリューションになるかもしれません。

    どちらを使用するかは、プラグインの要件によって異なります。いずれにせよ、入力を検証することを忘れないでください

    関連する問題