2017-03-03 52 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以了解如何在管理菜单中执行此操作。这可能是更优雅的解决方案,无需刷新任何页面。

要使用哪一个取决于您的插件的要求。无论哪种方式,不要忘记验证输入