我有一个使用类的自定义插件。在课程中,我添加了一个显示“设置”表单的管理仪表板菜单项。让我们说这堂课看起来像这样:
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...";
}
}
表格在仪表板页面中正确打印。当我点击提交时,它会进入一个完全空白的屏幕。我想要它做的是:
如果我在&lt; form&gt;上将操作留空标签它将返回到同一页面,我可以自己手动处理get / post params ...这似乎是一个糟糕的解决方案(但是到目前为止我唯一可以看到的)。
任何提示?
答案 0 :(得分:1)
您有两种方法可以执行此操作:
表单提交到同一页面,在呈现表单之前,请检查表单是否已提交。如果是,则调用函数显示&#34;填充完成&#34;和任何进一步的步骤。如果没有,则显示表格。 通过这种方式,你不会在你的插件中需要任何javascript,而且我的IMOO会更简单直接。
使用AJAX提交并使用javascript显示确认消息。您可以阅读文档AJAX in Plugins,了解如何在管理菜单中执行此操作。这可能是一个更优雅的解决方案,无需任何页面刷新。
使用哪一个取决于插件的要求。无论哪种方式,都不要忘记验证输入