我正在使用与接受的答案不同的方式来回答 OP 问题的这一特定部分以获得结果:
有谁知道表单上的“操作”需要什么才能使其转到函数...
发布到同一页面-通过空白表单操作-可以基于相同的单个表单执行不同的操作。
if ( isset($_POST['custom_action']) ){
if ( $_POST['custom_action'] == 'update'){
if ( isset($_POST['Submit']) ) {
//form validation and gather into a single object $valid;
//I put this in a class, so self::update_main_config($valid);
//otherwise you can just update_main_config($valid)
}
if ( isset($_POST['Submit_Default']) ) {
//no form validation needed & defaults handled via custom wp_option, this could also be static function very easily
//secondary action group such as self::restore_config_defaults();
}
}
}
基于我用于我的一个插件的自定义管理页面,我有条件地为我期望发生的事情设置上下文。我的管理配置页面提交新值,它可以恢复默认值......但它也可以根据用户输入影响其他模块。我正在展示如何使用相当简单的条件来创建更复杂的提交上下文。如果上传的是一张照片,并且管理员需要控制发布到任意用户个人资料,但我们想重用相同的代码来允许登录用户发布他们自己的个人资料图片怎么办?这就是为什么上下文,这就是为什么我认为我的方法是相关的。
我喜欢重用代码并利用单个功能循环来处理任何单个上下文 - 再次,使用单个隐藏表单输入,或可能基于用户或管理员事件的多个控件,可以使用相同的表单和理论上 1 个或多个提交按钮来更改上下文。我实际上想要 2 个按钮来分隔提交者脑海中的动作,所以我展示了该方法。
这里是对应的HTML
<form name="config_actions" action="" method="post">
<input type="hidden" id="custom_action" name="custom_action" value="update" />
<input type="submit" id="my_main_action" name="Submit" value="Update" />
<input type="submit" id="my_secondary_action" name="Submit_Default" value="Restore Defaults" />
</form>
使用简单的 javascript 有条件地将 input#custom_action 设置为适合创建我的上下文的值——为了这个示例,它验证 custom_action 何时设置为“更新”,尽管在我的代码中我使用其他上下文以及基于形成回复。
我之前的示例获得了 -2(!)我使用 $_POST['action'] 这意味着 input[name="action"] 不要与 form[action=""] 混淆,因为我以前的代码暗示 - 所以是的,那很糟糕。在这里,我更清楚地展示了我有一个名为“custom_action”的隐藏输入上下文管理器,并且我有 2 个名为“Submit”和“Submit_Default”的提交按钮,它们都有效地触发了相同的表单,因为它们都是 type=submit。