首先,不要将浏览器直接发送到主题或插件中的PHP文件。这是一个安全漏洞,导致设置非常脆弱。例如:
即使主题被停用,该文件也会工作,并适用于安装中的所有站点,而不仅仅是为其启用的站点。该文件需要访问并引导WordPress,导致冗长的包含路径很脆弱,由于需要指定表单处理程序文件的路径,在前端创建表单时可能会混淆插件的非标准上下文变得更加复杂,如果需要进行服务器端验证,需要知道再次显示表单时出现了什么问题,则会变得更加复杂,因此:
对于AJAX,使用register\\u rest\\u route和rest API创建接受表单处理所需数据的自定义端点,请使用现有页面。您不需要特殊的表单处理程序页面;您只需检查表单是否已提交,并采取相应的行动,例如:
<form method="post">
<input type="hidden" name="doing_form" value="yes"/>
</form>
然后在初始化挂钩上:
add_action( \'init\', function() {
if ( empty( $_POST[\'doing_form\'] ) ){
return; // We didn\'t submit the form
}
// We did! Do the form handling
...
}
最后,对于在MySQL表中存储联系人表单,我建议不要这样做。改用自定义帖子类型。它将为您提供一个管理员界面,您可以使用
WP_Query
而不是原始SQL,您可以导入和导出。如果您真的想用WordPress自动提供的URL、存档和模板在前端显示它们,您甚至可以将它们显示出来。
这就是流行的联系人表单插件的方式,这些插件已经完成了您尝试执行的操作,例如:
忍者形态接触形态7重力形态