WP中的自定义表单处理..正确的方式吗?

时间:2015-06-12 作者:Goodbytes

使用正确的设计模式在WP中处理表单的最佳方式是什么?我在网上发现了很多过时和不一致的信息,我现在这样做是不可持续的。

目前,当我在做一些繁重的PHP工作(即处理大型表单)时,我倾向于在WordPress中创建一个页面,尽可能充实HTML,然后创建一个自定义模板。。然后在模板中添加表单处理PHP内容。。。这很好,但会复制很多模板代码,如果是一个大型网站,我最终会得到很多自定义模板。

我在网上看到的其他解决方案:

创建一个函数,然后将其添加到init过滤器,在html中添加一个隐藏的表单字段,以便表单成为特定的目标。。看起来它会在每次加载页面时尝试处理此请求,所以看起来不是可行的解决方案。

创建一个插件-如上所述,我并不想仅仅为了处理表单而创建一个全新的插件。

创建一个单独的名为process的PHP文件,并将PHP内容放在这里,这看起来像是它从WP中删除了自己,实际上我已经看到一些示例完全独立,因为其中甚至有mysql connect内容。

[编辑]以下是我的表单提交功能:http://pastebin.com/VZCw3Br3 这有点乱,所以我尽可能多地发表了评论。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

“创建插件”并不是一个单独的选项,您仍然需要以某种方式拦截请求。我用过init 方法,这是一个可行的选择。正在检查issetPOST 在启动处理逻辑之前,var的速度非常快,我怀疑您甚至无法可靠地衡量加载过程中发生的大量其他事情的影响。另一种选择是admin-post.php 以及admin_post_(action) 钩该方法需要在处理后重定向。

结束

相关推荐

Using AJAX with Forms

我试图在WordPress中使用AJAX验证并提交表单,但是,我得到的响应是0。根据the codex, 这似乎表明admin ajax无法找到我定义的函数。我做错了什么?代码(为了演示而简化)<script type="text/javascript"> jQuery(function() { jQuery(document).on(\'click\', \'#test-button\', function() {