wordpress表单行动提交

时间:2011-02-28 00:27:30

标签: wordpress forms

在wordpress中有自己的自定义表单。

action=<?php bloginfo('template_url'); ?>/send_form.php"

在提交时,它总是发送到send_form.php 但是这个php用于发送信息 - 而且我不能用主题....

有没有办法留在当前页面,同时它发送信息并打印出来并在表格已成功发送的字段中显示消息???

有人对我有什么建议吗?

2 个答案:

答案 0 :(得分:10)

对此的回答是非常复杂的,并且正确处理需要一点点关注,但这是一种方法的基本要点:

  1. 必须将操作设置为加载当前页面,您可以通过将action标记中的<form>属性更改为:action=""
  2. 来执行此操作
  3. 在此页面的模板文件中,检测表单提交后何时加载页面。您可以通过检查$_POST variable
  4. 的状态来执行此操作
  5. 如果有帖子变量,请在模板文件中处理表单提交。您需要查看“send_form.php”中发生的事情以确定要执行的操作。请注意不要引入安全问题(例如,一定要使用NONCE)。
  6. 重定向回同一页面以摆脱帖子变量。如果你不这样做,人们会得到那些“你想重新提交表单”的警告信息。请参阅PHP header() function进行重定向,并注意必须在将任何输出发送到页面之前执行此操作。
  7. 使用server sessions显示“表单提交成功”。在重定向之前将会话变量设置为您的消息,然后在页面加载时检测它,显示它并将其删除,以便下次加载页面时不显示该消息。
  8. 那应该给你一个起点。

    如果其他人有更简单的解决方案,我也很乐意听到。

答案 1 :(得分:0)

如果您想通过插件而不是主题来实现,请使用“admin_post”(admin_post_YOUR_ACTION)和“admin_post_nopriv”(admin_post_nopriv_YOUR_ACTION)操作。 (顺便说一下,你也可以通过主题使用这些动作)

以下是一个很好的解释:https://www.sitepoint.com/handling-post-requests-the-wordpress-way/