在基于类的插件中在WordPress中创建表单

时间:2017-03-03 05:54:18

标签: php wordpress forms

我有一个使用类的自定义插件。在课程中,我添加了一个显示“设置”表单的管理仪表板菜单项。让我们说这堂课看起来像这样:

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...";
  }
}

表格在仪表板页面中正确打印。当我点击提交时,它会进入一个完全空白的屏幕。我想要它做的是:

  • 做点什么
  • 返回同一页面,显示“Stuff已完成”等消息。在相同的表单上方,用户可以再次单击表单提交以执行更多操作。

如果我在&lt; form&gt;上将操作留空标签它将返回到同一页面,我可以自己手动处理get / post params ...这似乎是一个糟糕的解决方案(但是到目前为止我唯一可以看到的)。

任何提示?

1 个答案:

答案 0 :(得分:1)

您有两种方法可以执行此操作:

  1. 表单提交到同一页面,在呈现表单之前,请检查表单是否已提交。如果是,则调用函数显示&#34;填充完成&#34;和任何进一步的步骤。如果没有,则显示表格。 通过这种方式,你不会在你的插件中需要任何javascript,而且我的IMOO会更简单直接。

  2. 使用AJAX提交并使用javascript显示确认消息。您可以阅读文档AJAX in Plugins,了解如何在管理菜单中执行此操作。这可能是一个更优雅的解决方案,无需任何页面刷新。

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